Foros del Web » Programando para Internet » Javascript »

Clase CSS no se modifica cuando cambio página

Estas en el tema de Clase CSS no se modifica cuando cambio página en el foro de Javascript en Foros del Web. Hola a todos: Estoy realizando un menú con delay por que el menú tiene incluido un efecto de animación y lo que quiero lograr es ...
  #1 (permalink)  
Antiguo 23/04/2016, 06:47
 
Fecha de Ingreso: mayo-2011
Ubicación: Palma de Mallorca
Mensajes: 108
Antigüedad: 13 años
Puntos: 4
Clase CSS no se modifica cuando cambio página

Hola a todos:

Estoy realizando un menú con delay por que el menú tiene incluido un efecto de animación y lo que quiero lograr es que cuando finalice la animación, te redirija a la página en concreto.

Eso consigo hacerlo, pero el problema es que la clase menu_item--current no cambia cuando cambio de página.

Código Javascript:
Ver original
  1. // JavaScript Document
  2.  
  3. (function()
  4. {
  5.     [].slice.call(document.querySelectorAll('.menu')).forEach(function(menu)
  6.     {
  7.         var menuItems = menu.querySelectorAll('.menu__link'),
  8.         setCurrent = function(ev)
  9.         {
  10.             ev.preventDefault();
  11.             var item = ev.target.parentNode; // li
  12.             // return if already current
  13.             if (classie.has(item, 'menu__item--current'))
  14.             {
  15.                 return false;
  16.             }
  17.             // remove current
  18.             classie.remove(menu.querySelector('.menu__item--current'), 'menu__item--current');
  19.             // set current
  20.             classie.add(item, 'menu__item--current');
  21.            
  22.             // He añadido esto
  23.             var goTo = this.getAttribute("data-url");
  24.             setTimeout(function(){window.location = goTo;},500);
  25.         };
  26.        
  27.         [].slice.call(menuItems).forEach(function(el)
  28.         {
  29.             el.addEventListener('click', setCurrent);
  30.         });
  31.     });
  32.    
  33.     [].slice.call(document.querySelectorAll('.link-copy')).forEach(function(link)
  34.     {
  35.         link.setAttribute('data-clipboard-text', location.protocol + '//' + location.host
  36.         + location.pathname + '#' + link.parentNode.id);
  37.         new Clipboard(link);
  38.         link.addEventListener('click', function()
  39.         {
  40.             classie.add(link, 'link-copy--animate');
  41.             setTimeout(function()
  42.             {
  43.                 classie.remove(link, 'link-copy--animate');
  44.             }, 500);
  45.         });
  46.     });
  47.    
  48. })(window);

Ese script es el que gestiona el menú (Incluido en el pack del menú).

http://agomilag.16mb.com/

Aquí la página donde tengo el problema.

¿Qué me falta para que funcione correctamente?

Un saludo a todos y gracias por la ayuda :)
  #2 (permalink)  
Antiguo 23/04/2016, 13:30
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 6 meses
Puntos: 977
Respuesta: Clase CSS no se modifica cuando cambio página

Solo cambia cuando das el clic, pero como asignas manualmente dicha clase a la primera opción, al recargar la página, se pierde el cambio.

Podrías pasar una variable mediante una cadena de consulta o guardar un valor en una cookie o con localStorage, de tal modo que, cuando se pulse una opción, se modifique el valor a enviar o guardar, siendo dicho valor una representación de la opción pulsada; y cada vez que cargue la página, solo tendrías que leer el valor recibido mediante la cadena de consulta o el valor guardado y, según sea este, asignarías la clase a la opción que corresponda.

Un saludo
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: css, js
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:39.