Foros del Web » Programando para Internet » Javascript »

Cambiar varias clases con un evento mediante Javascript

Estas en el tema de Cambiar varias clases con un evento mediante Javascript en el foro de Javascript en Foros del Web. Hola caballeros!, Pues estoy atascado , estoy intentando cambiar varias clases con el siguiente método : Sabiendo que en la hoja de estilo tenemos : ...
  #1 (permalink)  
Antiguo 08/02/2012, 00:52
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 3 meses
Puntos: 30
Pregunta Cambiar varias clases con un evento mediante Javascript

Hola caballeros!,

Pues estoy atascado , estoy intentando cambiar varias clases con el siguiente método :

Sabiendo que en la hoja de estilo tenemos :
Código:
#contenedorB {

	
}

#contenedorA {
	
	
}

.A {
	width:100px;
	height:100px;
	border:1px dashed #FF0000;		
}

.AA {
	width:100px;
	height:100px;
	border:5px dashed #FF0000;		
}
Intento de cambiar varias clases a div con el evento onmosedown :

Código:
<div class="A" onmousedown="document.getElementById('contenedorB','contenedorA').className='AA'">
</div>

<div id="contenedorB" class="A"></div>
<div id="contenedorA" class="A"></div>
Y pregunta, ya que estoy un poco desorientado con todo esto, ¿si en vez de cambiar una clase , quisiese poner a cada div una clase distinta?, ovbiamente partiendo del unico evento. ¿Que tendria que modificar?

Última edición por Albuss; 08/02/2012 a las 01:19
  #2 (permalink)  
Antiguo 08/02/2012, 02:10
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Respuesta: Cambiar varias clases con un evento mediante Javascript

Código HTML:
<div class="A" onmousedown="nombre_funcion(['contenedorB', 'contenedorA'], 'AA')">
</div> 
Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. function nombre_funcion(array, c_name)
  3. {
  4.   for(i in array)
  5.     document.getElementById(i).className = c_name;
  6. }
  7. </script>
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #3 (permalink)  
Antiguo 08/02/2012, 02:17
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 3 meses
Puntos: 30
Respuesta: Cambiar varias clases con un evento mediante Javascript

@ZiTAL Que bueno! , gracias!! , Supongo que a la funcion podré agregarle todos los nombres de clases que quiera , ¿no?


Sois una panda de cracks, los que ayudais!!!
  #4 (permalink)  
Antiguo 08/02/2012, 03:26
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 3 meses
Puntos: 30
Respuesta: Cambiar varias clases con un evento mediante Javascript

Siento decirlo, pero a la hora de la practica NO cambia las clases ... :(


he probado con esta variante , pero nada :

Código:
<script languaje="JavaScript" type="text/javascript">

function nombre_funcion(array, c_name) {
 	
	for (j=0;j<i;j++){
    document.getElementById(i).className = AA;
	}
}
</script>
  #5 (permalink)  
Antiguo 08/02/2012, 03:32
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Cambiar varias clases con un evento mediante Javascript

Hola:

Hay errores en tu código:

Cita:
Iniciado por Albuss Ver Mensaje
Siento decirlo, pero a la hora de la practica NO cambia las clases ... :(


he probado con esta variante , pero nada :

Código:
<script languaje="JavaScript" type="text/javascript">

function nombre_funcion(array, c_name) {
 	
	for (j=0;j<i;j++){
    document.getElementById(i).className = AA;
	}
}
</script>
Los valores del bucle debes revisarlos, y no veo que uses los parámetros de la función; y "AA" ¿no debería estar entrecomillado...?

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #6 (permalink)  
Antiguo 08/02/2012, 03:35
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 3 meses
Puntos: 30
Respuesta: Cambiar varias clases con un evento mediante Javascript

Srry fallo mio, fue copie una variente desesperada xD , ME me referia a estos dos codigos vasados en los que ha dado ZiTAL.

el original :
Código:
<script type="text/javascript">
function nombre_funcion(array, c_name)
{
  for(i in array)
    document.getElementById(i).className = c_name;
}
</script>
las variantes he que probado (con buena sintaxsis, en la medida de lo que yo se) :

Código:
function nombre_funcion(array, c_name) {
  for(i in document) {
    document.getElementById(i).className = 'AA';

}
</script>
y

Código:
<script languaje="JavaScript" type="text/javascript">

function nombre_funcion(array, c_name) {
 	
	for (j=0;j<i;j++){
    document.getElementById(i).className ='AA';
	}
}
</script>

En el Body, simplemente intente usando lo que dijo Zital :

Código:
<div class="A" onmousedown="change(['contenedorB', 'contenedorA'], 'AA')">

Última edición por Albuss; 08/02/2012 a las 03:40
  #7 (permalink)  
Antiguo 08/02/2012, 03:40
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Respuesta: Cambiar varias clases con un evento mediante Javascript

es array[i] dentro del for sorry:

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. function nombre_funcion(array, c_name)
  3. {
  4.   for(i in array)
  5.     document.getElementById(array[i]).className = c_name;
  6. }
  7. </script>
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #8 (permalink)  
Antiguo 08/02/2012, 03:44
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Cambiar varias clases con un evento mediante Javascript

Hola:

Los arrays leídos con ese tipo de bucle asociativo puede darte problemas, porque se leen todos los atributos y el "length" también (no sé si en todos los navegadores pero en ocasiones me ha dado problemas y para estos casos prefiero usar el bucle for clásico):

for (i = 0, total = array.length; i < total; i++)...

además no debes usar i sino array[i]...

Comprueba esas cosillas y nos cuentas...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo

Última edición por caricatos; 08/02/2012 a las 03:46 Razón: ortografía
  #9 (permalink)  
Antiguo 08/02/2012, 03:45
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 3 meses
Puntos: 30
Respuesta: Cambiar varias clases con un evento mediante Javascript

Muchas gracias @Zital!, Da gusto participar en este foro, aprendo una cantidad!
  #10 (permalink)  
Antiguo 08/02/2012, 03:48
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 3 meses
Puntos: 30
Respuesta: Cambiar varias clases con un evento mediante Javascript

@caricatos , Tengo entendido que es una prioridad Capital usar El bucle For in usando onjetos , en este caso Array´s , ¿tanta diferencia hay de rendimiento?

Pregunto, por que vengo de C++ , javascript lo uso con la sintaxis de C++ Y por ahora voy tirando, yo tambien prefiero por simplicidad y comprension el bucle For normal xD
  #11 (permalink)  
Antiguo 08/02/2012, 03:48
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Respuesta: Cambiar varias clases con un evento mediante Javascript

Cita:
Iniciado por caricatos Ver Mensaje
Hola:

Los arrays leídos con ese tipo de bucle asociativo puede darte problemas, porque se leen todos los atributos y el "length" también (no sé si en todos los navegadores pero en ocasiones me ha dado problemas y para estos casos prefiero usar el bucle for clásico):

for (i = 0, total = array.length; i < total; i++)...

además no debes usar i sino array[i]...

Comprueba esas cosillas y nos cuentas...

Saludos
¿que quieres decir que por cada vuelta lee el length del array? menudo churro ._______.

pd: un placer volver a verte :)
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #12 (permalink)  
Antiguo 08/02/2012, 03:50
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Respuesta: Cambiar varias clases con un evento mediante Javascript

De todas formas, instalate el FIREBUG para firefox ya veras que bien se debuggea :)
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #13 (permalink)  
Antiguo 08/02/2012, 04:01
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 3 meses
Puntos: 30
Respuesta: Cambiar varias clases con un evento mediante Javascript

¿Puedo concatenar Llamadas a funciones dentro de un unico evento? , es decir, he intentado esto :
Código:
<script type="text/javascript">
function change(array, c_name)
{
  for(i=0 , total=array.length;i<total;i++){
    document.getElementById(array[i]).className = c_name;
	document.getElementById(array[i]).className = c_nameB;
  }
}

 function changeB(array, c_name)
{
  for(i=0 , total=array.length;i<total;i++){
    document.getElementById(array[i]).className = c_name;
  }
 
}
</script>

En el Body

Código:
<div class="A" onmouseover="change(['contenedorB', 'contenedorA'] ,'AA',)" + "changeB(['contenedorC', 'contenedorD'] ,'BB',)"></div>

¿O tendria que declarar varios objetos array´s diferentes?
  #14 (permalink)  
Antiguo 08/02/2012, 04:05
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Respuesta: Cambiar varias clases con un evento mediante Javascript

Cita:
Iniciado por Albuss Ver Mensaje
¿Puedo concatenar Llamadas a funciones dentro de un unico evento? , es decir, he intentado esto :
Código:
<script type="text/javascript">
function change(array, c_name)
{
  for(i=0 , total=array.length;i<total;i++){
    document.getElementById(array[i]).className = c_name;
	document.getElementById(array[i]).className = c_nameB;
  }
}

 function changeB(array, c_name)
{
  for(i=0 , total=array.length;i<total;i++){
    document.getElementById(array[i]).className = c_name;
  }
 
}
</script>

En el Body

Código:
<div class="A" onmouseover="change(['contenedorB', 'contenedorA'] ,'AA');changeB(['contenedorC', 'contenedorD'] ,'BB',)"></div>

¿O tendria que declarar varios objetos array´s diferentes?
lo estás haciendo mal por 2 cosas:

1.- tienes:

document.getElementById(array[i]).className = c_name;
document.getElementById(array[i]).className = c_nameB;

dentro de la funcion, para empezar la variable nameB no existe y si existiera estarías sobreescribiendo lo que estás haciendo justo 1 linea más arriba, si quieres concatenar funciones escribelas una detras de otra separatos por ;

Código:
change(['contenedorB', 'contenedorA'] ,'AA');changeB(['contenedorC', 'contenedorD'] ,'BB');
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #15 (permalink)  
Antiguo 08/02/2012, 04:11
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 3 meses
Puntos: 30
Respuesta: Cambiar varias clases con un evento mediante Javascript

Genial , gracias!!! ¿es mas recomendable usar eventos javascript "clic()" o html "onclick", para que la web no se ralentice tanto?

Etiquetas: css3, eventos, html5, obtenerclassname, obtenerid
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 05:46.