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

167
Vistas
Mantenga la clase agregada de los botones de opción al recargar

He estado trabajando en este código durante horas y sigo encontrando una variedad de problemas, por lo que la cantidad de veces que he editado y probado diferentes formas de codificar esto es mucha. Básicamente, estoy tratando de crear un conmutador de tema de 3 (o más) colores usando botones de opción. Se supone que debe agregar una clase, según la que se haya seleccionado, a la etiqueta del cuerpo para que pueda usar css y variables para cambiar el estilo.

Lo conseguí para agregar la clase a la etiqueta del cuerpo, pero al recargar, no mantendrá la clase. Sigo leyendo sobre localStorage, así que intenté agregarlo, pero nunca lo había usado antes, así que no sé si las varias formas que he probado son simplemente... incorrectas o si simplemente no funcionan. con lo que estoy tratando de hacer.

Solo puedo usar JavaScript y/o JQuery. Esto es lo que tengo actualmente.

HTML

 <input name="theme" type="radio" aria-label="Light" id="light" value="light"> <label for="light">Light</label> <input name="theme" type="radio" aria-label="Medium" id="medium" value="medium"> <label for="medium">Medium</label> <input name="theme" type="radio" aria-label="Dark" id="dark" value="dark"> <label for="dark">Dark</label>

GUION

 jQuery(window).on("load", function() { $("#light").click(function(){ $("body").removeClass("medium"); $("body").removeClass("dark"); $("body").addClass("light"); localStorage.ClassName = "light"; }); $("#medium").click(function() { $("body").removeClass("light"); $("body").removeClass("dark"); $("body").addClass("medium"); localStorage.ClassName = "medium"; }); $("#dark").click(function() { $("body").removeClass("light"); $("body").removeClass("medium"); $("body").addClass("dark"); localStorage.ClassName = "dark"; }); });

También, para tener en cuenta, probé las secciones individuales (con sus nombres de clase relevantes) como

 $("#dark").click(function() { $("body").removeClass("light"); $("body").removeClass("medium"); $("body").addClass(localStorage.getItem('dark')); });
about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Su problema es localStorage.getItem("dark") Debería ser localStorage.getItem("ClassName")

Y una mejor práctica es usar el método localStorage.setItem("ClassName", "light") para asignar datos

Aquí hay un artículo de MDN sobre LocalStorage .

Este es tu código editado:

 jQuery(window).on("load", function() { $("#light").click(function(){ $("body").removeClass("medium"); $("body").removeClass("dark"); $("body").addClass("light"); localStorage.setItem("ClassName", "light") }); $("#medium").click(function() { $("body").removeClass("light"); $("body").removeClass("dark"); $("body").addClass("medium"); localStorage.setItem("ClassName", "medium") }); $("#dark").click(function() { $("body").removeClass("light"); $("body").removeClass("medium"); $("body").addClass("dark"); localStorage.setItem("ClassName", "dark") }); }); $("#dark").click(function() { $("body").removeClass("light"); $("body").removeClass("medium"); $("body").addClass(localStorage.getItem('ClassName')); });
about 4 years ago · Santiago Trujillo 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