Foros del Web » Programando para Internet » Javascript »

Como puedo hacer esto

Estas en el tema de Como puedo hacer esto en el foro de Javascript en Foros del Web. Hola, Tengo muchos divs como: Código: <div id="sala"> <div class="sala" sala="General">General</div> <div class="sala" sala="Entretenimiento">Entretenimiento</div> <div class="sala" sala="Cine">Cine</div> <div class="sala" sala="Chistes">Chistes</div> [...] </div> Y como puedo ...
  #1 (permalink)  
Antiguo 25/11/2008, 22:01
Avatar de pato12  
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 17 años, 1 mes
Puntos: 101
Como puedo hacer esto

Hola,
Tengo muchos divs como:
Código:
<div id="sala">
<div class="sala" sala="General">General</div>
<div class="sala" sala="Entretenimiento">Entretenimiento</div>
<div class="sala" sala="Cine">Cine</div>
<div class="sala" sala="Chistes">Chistes</div>
[...]
</div>
Y como puedo hacer que para que si apreto en General, me cambie el class a sala_ac y todos los otros a sala.
Yo uso esta funcion:
Código HTML:
function selecSala(){
	var lis = document.getElementById("sala").getElementsByTagName("div");
	for (var i=0; i<lis.length; i++) {
		lis[i].onclick=function() {
		sala=this.getAttribute('sala');
		this.className="sala_ac";
	}
	}
}
window.onload=selecSala;
Me lo cambia, pero si apretó después de General, Cine me deja el General en sala_ac y Cine tambien.
Gracias
Salu2
__________________
Half Music - www.halfmusic.com
  #2 (permalink)  
Antiguo 25/11/2008, 22:17
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: Como puedo hacer esto

Puedes usar la misma lógica de tu código que estás usando para asignar los eventos, quiero decir que puedes crear una función parecida que en lugar de asignar el evento onclic, asigne el evento className a "sala", y llamar a esa función en el evento onclick del div, así, al ejecutarlo, todos los divs volverán a su clase por defecto y después de eso, cambia aquella en que se hizo click. Si no se entiende, me avisas . Saludos .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 25/11/2008, 22:20
Avatar de pato12  
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 17 años, 1 mes
Puntos: 101
Respuesta: Como puedo hacer esto

Hola,
No te entiendo, pero gracias por responder.
Gracias
Salu2
__________________
Half Music - www.halfmusic.com
  #4 (permalink)  
Antiguo 25/11/2008, 22:26
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: Como puedo hacer esto

Me refiero a algo como esto:
Código javascript:
Ver original
  1. function restartClass(){
  2.     var lis = document.getElementById("sala").getElementsByTagName("div");
  3.     for (var i=0; i<lis.length; i++) {
  4.         lis[i].className = "sala";
  5.     }
  6. }
Lo que hace esa función es restablecer la clase de todos los div, por lo que llamándolo justo antes de cambiar la clase del div en que se hizo click debería hacer lo que deseas.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 25/11/2008, 22:29
Avatar de pato12  
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 17 años, 1 mes
Puntos: 101
Respuesta: Como puedo hacer esto

Hola,
Ya entendí y funciona de 10.
Muchas gracias
Salu2
__________________
Half Music - www.halfmusic.com
  #6 (permalink)  
Antiguo 25/11/2008, 22:33
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: Como puedo hacer esto

Me alegra que haya funcionado .

También existe la posibilidad de guardar en una variable cuál fue el último div que cambio de class, y restablecer únicamente ese .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
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 18:41.