Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Cambiar className a travez de un array

Estas en el tema de Cambiar className a travez de un array en el foro de Javascript en Foros del Web. Hola amigos soy algo nuevo en esto de javascript y estoy tratando de hacer unos botones que cambian de estilo con la siguiente función: Código: ...
  #1 (permalink)  
Antiguo 07/04/2015, 06:37
Avatar de Graveworm  
Fecha de Ingreso: marzo-2015
Mensajes: 5
Antigüedad: 9 años, 1 mes
Puntos: 0
Pregunta Cambiar className a travez de un array

Hola amigos soy algo nuevo en esto de javascript y estoy tratando de hacer unos botones que cambian de estilo con la siguiente función:

Código:
function activar(opcion){
	var botones = [document.getElementById('button-1'),document.getElementById('button-2'),document.getElementById('button-3'),
	document.getElementById('button-4'),document.getElementById('button-5'),document.getElementById('button-6'),document.getElementById('button-7')];
	
	if (opcion==0) {
		botones[0].className = 'iconon';
		botones[1].className = 'iconoff';
		botones[2].className = 'iconoff';
		botones[3].className = 'iconoff';
		botones[4].className = 'iconoff';
		botones[5].className = 'iconoff';
		botones[6].className = 'iconoff';
	} 
}
¿Hay alguna manera de simplificarlo si las opciones del array del 1 al 6 se les va a asignar la misma clase?

Pense que indicando en el mismo serviría poniéndolo así:

Código:
botones[0].className = 'iconon';
botones[1,2,3,4,5,6].className = 'iconoff';

mi codigo html es asi

Código HTML:
<a id="button-1" class="iconon" onClick="javascript: activar(0)">Ejemplo 1</a> 

Espero alguien pueda ayudarme o decirme de que manera puedo hacerlo mas simple, se que hay varias formas de hacer casi todo, y en mi caso siempre que oprimo un boton, hago que a los demas se les asigne la clase de inactivos y que el que oprimi se active.

Saludos.
  #2 (permalink)  
Antiguo 07/04/2015, 07:49
Avatar de NueveReinas  
Fecha de Ingreso: septiembre-2013
Ubicación: No tan Buenos Aires
Mensajes: 1.101
Antigüedad: 10 años, 7 meses
Puntos: 145
Respuesta: Cambiar className a travez de un array

Cita:
Iniciado por Graveworm Ver Mensaje
en mi caso siempre que oprimo un boton, hago que a los demas se les asigne la clase de inactivos y que el que oprimi se active.
Usa this y problema solucionado.
__________________
¿Te sirvió la respuesta? Deja un +1
  #3 (permalink)  
Antiguo 07/04/2015, 10:34
(Desactivado)
 
Fecha de Ingreso: abril-2015
Ubicación: España
Mensajes: 616
Antigüedad: 9 años, 1 mes
Puntos: 74
Respuesta: Cambiar className a travez de un array

Si usases jQuery podrías hacer esto

Código Javascript:
Ver original
  1. $('.iconon').attr('class', 'iconoff');
  #4 (permalink)  
Antiguo 07/04/2015, 11:49
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 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
  #5 (permalink)  
Antiguo 08/04/2015, 09:02
Avatar de Graveworm  
Fecha de Ingreso: marzo-2015
Mensajes: 5
Antigüedad: 9 años, 1 mes
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.

Etiquetas: html
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 04:37.