Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
2
respuestas

[Duda] Ayuda con codigo !!!

Buenas El codigo lo estoy haciendo diferente al que hizo el insctructor. La idea es que en la funcion dibujarbarra solo se tenga que teclear el año. Casi lo logro pero tengo un problema que no puedo resolver

En esta parte del codigo. Dentro de la funcion dibujarRectangulo, tengo manualmente escrito porcentaje2009[posicion]. No puedo lograr que este valor cambie segun el año tecleado (En el for tenia el mismo problema pero lo solucione concatenando la palabra for y el parametro anho, sin embargo esta "solucion" no me funciona en el parametro de dibujarRectangulo)

function dibujarGrafica(anho){

    var colores= ["yellow","red","blue","white","black"]
    var porcentaje2009= [6,47,41,3,3]    
    var porcentaje2019= [81,9,3,3,4]

    for (var posicion= 0; posicion < ("porcentaje" + anho).length; posicion++){

        dibujarRectangulo(colores[posicion],posiciones(anho)[posicion],porcentaje2009[posicion])

        console.log(dibujarRectangulo)
    }
}

dibujarGrafica(2009)

De momento asi es como tengo el codigo

<canvas width= "600" height = "400"></canvas>

<script>


var pantalla= document.querySelector("canvas");
var pincel= pantalla.getContext("2d");

pincel.fillStyle="grey";
pincel.fillRect(0,0,600,400);

// anho 2019 = CH 6%, FIR 47%, IE 41%, SAF 3%, OTR 3%

function dibujarRectangulo(color,posicionInicial,porcentaje){

    var pantalla= document.querySelector("canvas");
    var pincel= pantalla.getContext("2d");
    var anchoBarra = 50 

    pincel.fillStyle= color;
    pincel.fillRect(150,posicionInicial,anchoBarra,porcentaje);

}

    function posiciones(anho){

        var anho2009= [6,47,41,3,3]    
        var anho2019= [81,9,3,3,4]

        if (anho == 2009){

            var sumaAltura = 0
            var posicionInicial= [0,]

            for (var posicion=0; posicion < anho2009.length; posicion++){

                var altura = anho2009[posicion]

                sumaAltura = sumaAltura + altura

                posicionInicial.push(sumaAltura)

            }     

        }
        return posicionInicial
    } 


function dibujarGrafica(anho){

    var colores= ["yellow","red","blue","white","black"]
    var porcentaje2009= [6,47,41,3,3]    
    var porcentaje2019= [81,9,3,3,4]

    for (var posicion= 0; posicion < ("porcentaje" + anho).length; posicion++){

        dibujarRectangulo(colores[posicion],posiciones(anho)[posicion],porcentaje2009[posicion])

        console.log(dibujarRectangulo)
    }
}

dibujarGrafica(2009)

//console.log(posiciones)

//function imprimir(frase){

//            document.write(frase);
//        }

//imprimir(posiciones(2019)[0])

</script>
2 respuestas

Así podrías hacerlo, también recuerda que "tener menos código, no significa que sea mas rápido", cualquier duda extra me avisas

function dibujarGrafica(anho){

    let colores= ["yellow","red","blue","white","black"]
    let porcentaje= [];
    switch(anho){
    case "2009" : 
            porcentaje = [6,47,41,3,3];
    break;

    case "2019":
            porcentaje = [81,9,3,3,4];
    break;

    } 

    for (var posicion= 0; posicion < porcentaje.length; posicion++){

        dibujarRectangulo(colores[posicion],posiciones(anho)[posicion],porcentaje[posicion])

        console.log(dibujarRectangulo)
    }
}

dibujarGrafica(2009)

Me podrias explicar esta parte del codigo

switch(anho){
    case "2009" : 
            porcentaje = [6,47,41,3,3];
    break;

    case "2019":
            porcentaje = [81,9,3,3,4];
    break;

    } 

Lo de case y switch es algo que aun no he visto en los cursos