Ver Mensaje Individual
  #4 (permalink)  
Antiguo 07/04/2015, 11:49
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 6 meses
Puntos: 977
Respuesta: Cambiar className a travez de un array

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. }

DEMO

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
__________________
«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