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

Por que cuando coloco el IF FUERA DE LA FUNCION , YA NO FUNCIONA

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <canvas width="600" height="400"> </canvas>
    <script>

        var pantalla = document.querySelector("canvas");
        var pincel = pantalla.getContext("2d");     // extraer el contenido a la variable pincel 
        pincel.fillStyle = "grey";  // color de la pantalla
        pincel.fillRect(0,0,600,400);     //  dimensiones de la pantalla
        var colores =["blue","red","green"];

        var indiceColorActual = 0

        function dibujarCirculo(evento)
        {
            var x = evento.pageX - pantalla.offsetLeft;
            var y = evento.pageY - pantalla.offsetTop;    

            pincel.fillStyle = colores[indiceColorActual];
            pincel.beginPath();
            pincel.arc(x,y,10,0,2*3.14);
            pincel.fill();
            console.log(x + "," + y);        
        }

        pantalla.onclick = dibujarCirculo;

        function alterarColor() {
           indiceColorActual++ ;
            //alert(+ indiceColorActual);
            return false ;

        }

        if (indiceColorActual >= colores.length ) {
            alert (indiceColorActual) ;
            indiceColorActual = 0 ;
        }

        pantalla.oncontextmenu = alterarColor;

    </script> 
</body>
</html>
5 respuestas

Saludos, Creo que es debido a que al abrir el programa por primera vez, se ejecuta todo el código, por eso el programa verifica inmediatamente la condición IF, al ver que no es mayor o igual a la longitud de la lista, simplemente no hace nada, cuando le das una entrada al clic derecho, simplemente modificas el valor de "indiceColorActual" pero no se ejecuta todo el código nuevamente y entonces no ejecuta la condición if.

Espero te haya servido

estas poniendo el if fuera de la funcion cambiar color ahi esta el problem

al ponerlo fuera toma el valor de la variable que pusiste al princio, osea 0 y como o no es mayor o igual que color.length no efectua el if. cuando lo pones dentro de la función si toma en cuenta lo que esta haciendo la función.

eso creo que es vi un video en youtube que explica eso, que las variables dentro de la funcion solo funcionan dentro de la funcion o algo así entendí

como te comentaron si tu pones el if afuera cuando se ejecuta el programa por primera vez el if se ejecutar solo una vez por lo cual no servira ya que indiceColorActual sera 0 y no afectara el funcionamiento , por el contrario cuando se pone dentro de la funcion cada vez que damos click la funcion se executa y el contador aumenta y la condicion se verifica y si se cumple se ejecuta el bloque

buen dia !!! como dicen los compañeros el if debe ir adentro de la función para que funcione solamente cada vez que vos la invocas y asi de esta manera puedas cambiar de color todas las veces que vos lo desees , de esa forma vos vas a cambiar de color una vez y nunca te va a volver al azul , ya que esa condicion dentro de la funcion no existe , existe por fuera de la funcion y se ejecuta una sola vez al principio del programa . Espero haberte ayudado, saludos .