Ver Mensaje Individual
  #5 (permalink)  
Antiguo 08/04/2015, 09:02
Avatar de Graveworm
Graveworm
 
Fecha de Ingreso: marzo-2015
Mensajes: 5
Antigüedad: 10 años
Puntos: 0
Respuesta: Cambiar className a travez de un array

Cita:
Iniciado por Alexis88 Ver Mensaje
Solo necesitas pasarle a la función al propio elemento afectado mediante la palabra reservada this, capturar al elemento que posea dicha clase y quitársela para, finalmente, asignarla al elemento que acaba de ser pulsado. Para que no tengas que reasignar la misma clase al resto de elementos, asígnala desde el inicio, así solo se van cambiando a los elementos que son pulsados en el momento.

Código HTML:
Ver original
  1. <a id="button-1" class="iconoff" onclick="activar(this)">Ejemplo 1</a>
  2. <a id="button-2" class="iconoff" onclick="activar(this)">Ejemplo 2</a>
  3. <a id="button-3" class="iconoff" onclick="activar(this)">Ejemplo 3</a>
  4. <a id="button-4" class="iconoff" onclick="activar(this)">Ejemplo 4</a>
  5. <a id="button-5" class="iconoff" onclick="activar(this)">Ejemplo 5</a>
  6. <a id="button-6" class="iconoff" onclick="activar(this)">Ejemplo 6</a>
  7. <a id="button-7" class="iconoff" onclick="activar(this)">Ejemplo 7</a>

Código Javascript:
Ver original
  1. function activar(elem){
  2.     //Tomo al elemento que posea la clase 'iconon'
  3.     var viejo = document.querySelector(".iconon");
  4.  
  5.     //Si hay algún elemento con dicha clase, se la cambio por 'iconoff'
  6.     if (viejo){
  7.         viejo.className = "iconoff";
  8.     }
  9.  
  10.     //Y al elemento que ha sido pulsado, le asigno la clase 'iconon'
  11.     elem.className = "iconon";
  12. }

[URL="http://jsbin.com/gozovabuti/1/edit?html,css,js,output"]DEMO[/URL]

P.D.: El javascript: en la llamada a la función desde el objeto HTML, no es necesario cuando se realiza desde algún evento on, además, no es necesario que escribas el nombre del evento en camelCase, como en onClick; con que todo esté en minúsculas es suficiente.

Saludos
Ohhh excelente!! la solución y gracias por tomarte el tiempo, mil gracias.


Tenia la impresión de que era así por lo que había visto (this) pero no se usarlo aun :(

:)

Saludos.