Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

173
Vistas
Problema con el acceso a un valor de variables fuera de una función
let dark = true; function toggle() { dark = false; document.body.classList.toggle('dark-mode'); } if (dark = false) { document.getElementById("logo").src="../../img/Kevin D (White).png"; }else { document.getElementById("logo").src="../../img/Kevin D (Black).png"; }

Arriba está mi código. Cada vez que hago clic en el botón, la imagen no pasa a la versión en blanco, sino que permanece negra incluso sobre un fondo negro, ¿cómo solucionaría esto? El código también está adjunto a un botón que llamaría a esa función.

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Hay algunas cosas que resolver aquí:

  • Debe volver a llamar al if cuando cambia la variable, lo hacemos envolviéndolo en una función, luego llamándolo al cargar y cada vez que se llama al conmutador.
  • Toggle actualmente no "alterna", establezca el valor en !dark para invertirlo cada vez.
  • El if actualmente está asignando el valor false a la variable dark , necesitamos compararlo en su lugar, y dado que ya es un booleano, puede ser simplemente if (dark) {}

 var dark = true; function toggle() { dark = !dark; // To actually toggle the variable you need to invert the current value document.body.classList.toggle('dark-mode'); // After the variable is toggle, call the function to update the theme changeTheme() } function changeTheme() { if (dark) { console.log("It's dark!") } else { console.log("It's light!") } } // Call the function on load to set the initial theme changeTheme() // Add an event listener to call the toggle function document.getElementById("toggle").addEventListener("click", toggle);
 <div id="toggle">Toggle</div>

about 4 years ago · Juan Pablo Isaza Denunciar

0

  • Su función se llama 'alternar', pero por el momento solo establecería oscuro en falso. Así que cambiaría eso a dark = !dark , por lo que siempre se establece en lo contrario.
  • El siguiente paso es incluir el bloque if-else dentro de la función, para que se ejecute al alternar.
  • El único signo igual en la instrucción if ya se mencionó...
  • en lugar de if(dark === false) puedes simplemente verificar if(!dark) o mejor cambiar la lógica para no comenzar con una negación y decir if(dark){'dark'}else{'not dark}
  • Parece que tiene espacios en blanco dentro de los nombres de archivo de las imágenes, lo que probablemente sea mejor evitar...

 let dark = true; function toggle() { dark = !dark; document.body.classList.toggle('dark-mode'); if (dark === false) { console.log('dark ===', dark, '>> set white img') // document.getElementById("logo").src = "../../img/Kevin D (White).png"; } else { console.log('dark ===', dark, '>>set black img') // document.getElementById("logo").src = "../../img/Kevin D (Black).png"; } }
 .dark-mode { background: black; color: white; }
 <button onclick="toggle()">toggle</button>

about 4 years ago · Juan Pablo Isaza Denunciar

0

Tienes un error con el signo =. debería ser ==

 if (dark == false) {
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda