Foros del Web » Programando para Internet » Javascript »

Cambiar clase (o solo background) a varios elementos al onclick

Estas en el tema de Cambiar clase (o solo background) a varios elementos al onclick en el foro de Javascript en Foros del Web. Hola Lo que quiero es que al hacer click en un elemento este cambie su background-color. Para eso podria hacer: Código: <p onclick = "this.style.backgroundColor='#F00'">Blabla</p> ...
  #1 (permalink)  
Antiguo 19/11/2008, 03:33
 
Fecha de Ingreso: marzo-2005
Mensajes: 130
Antigüedad: 19 años, 1 mes
Puntos: 1
Cambiar clase (o solo background) a varios elementos al onclick

Hola

Lo que quiero es que al hacer click en un elemento este cambie su background-color.

Para eso podria hacer:
Código:
<p onclick = "this.style.backgroundColor='#F00'">Blabla</p>
Pero quiero que se cambie a varios elementos

es decir, si tengo esto:

Código:
<p class="a">Bla Bla</p>
<p class="b">Bla Bla</p>
<p class="c">Bla Bla</p>

<p class="a">Bla Bla</p>
<p class="b">Bla Bla</p>
<p class="c">Bla Bla</p>
que al hacer click en ".a" se cambien los 2 parrafos con clase "a"
Si le das a ".b", igual, que cambie de color los dos parrafos con class "b"
y si le das a ".c", lo mismo.

he estado mirando varias formas pero, ninguna es la que busco al 100%.
En esta (http://javascript.espaciolatino.com/trucos/t29.htm) usan id:
Código:
document.getElementById('par').className = 'invertir'
por lo que no podria hacerlo para varios elementos.

Y en este otro post, realmente no se muy bien que hace el script:
modificar-clase-css-con-javascript

Lo de cambiar el color, podria ser por medio del estilo del elemento, o cambiando el class de este, y que el nuevo class, ya este definido.

Saludos y gracias!
  #2 (permalink)  
Antiguo 19/11/2008, 03:41
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 clase (o solo background) a varios elementos al onclick

Hola:

podrías cambiar solo la clase del elemento contenedor (si se tratara de un contenedor común), y definir los estilos para las clases hijas...

.tipoA.a {background-color: red;}
.tipoA.b {background-color: blue;}
.tipoA.c {background-color: pink;}

.tipoB.a {background-color: yellow;}
.tipoB.b {background-color: lime;}
.tipoB.c {background-color: cyan;}

con esto, al cambiar la clase del contenedor común cambiarían los colores de los elementos dependientes...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 19/11/2008, 11:33
 
Fecha de Ingreso: marzo-2005
Mensajes: 130
Antigüedad: 19 años, 1 mes
Puntos: 1
Respuesta: Cambiar clase (o solo background) a varios elementos al onclick

ok, queda asi:

Código:
<html>
<head>
<style type="text/css">
.tipoA .a {background-color: red;}
.tipoA .b {background-color: blue;}
.tipoA .c {background-color: pink;}

.tipoB .a {background-color: yellow;}
.tipoB .b {background-color: lime;}
.tipoB .c {background-color: cyan;}
</style>
</head>
<body>

<div class="tipoA" id="contenedor" onclick="document.getElementById('contenedor').className = 'tipoB'">
<p class="a">Bla Bla</p>
<p class="b">Bla Bla</p>
<p class="c">Bla Bla</p>

<p class="a">Bla Bla</p>
<p class="b">Bla Bla</p>
<p class="c">Bla Bla</p>
</div>
</body>
<html>
Con lo que al hacer click en cualquier sitio me cambir tipoA por tipoB y me cambiaria el color a todos, y yo solo quiero que me cambie el color al que haces click (y los de su misma class).
Incluso solo quiero que se le cambie el color a una clase a la vez, pero vamos por partes.

Algun otro metodo??
Saludos!
  #4 (permalink)  
Antiguo 19/11/2008, 11:48
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Cambiar clase (o solo background) a varios elementos al onclick

Es que no estás aplicando de la forma como te comentaba caricatos. Lo que él decía era que en la clase tipoA cambiaras los que tenían la clase "a" a un color, y el resto les pusieras el color por defecto, en la clase tipoB cambies la clase "b" al color diferente y el resto a su color por defecto y así sucesivamente, y que no cambies en el onclick del div sino en el onclick del respectivo párrafo. Otra forma sería que los ids de los párrafos a cambiar fueran semejantes (id1, id2), así solo tendrás que recorrer los ids que comiencen por cierta cadena y cambiar su clase.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 19/11/2008, 13:18
 
Fecha de Ingreso: marzo-2005
Mensajes: 130
Antigüedad: 19 años, 1 mes
Puntos: 1
Respuesta: Cambiar clase (o solo background) a varios elementos al onclick

Hola, gracias por contestar, pues sigo sin entenderlo ,porque he probado lo siguiente y sigue sin ir.

Código:
<html>
<head>
<style type="text/css">
.tipoA .a , .tipoA .b {background-color: #FFF;}

.tipoB .a {background-color: #F00;}
.tipoB .b {background-color: #0F0;}
</style>
</head>
<body>

<div class="tipoA" id="contenedor" >
<p class="a" onclick="document.getElementById('contenedor').className = 'tipoB'">Bla Bla</p>
<p class="b" onclick="document.getElementById('contenedor').className = 'tipoB'">Bla Bla</p>
<p class="c" >Bla Bla</p>

<p class="a">Bla Bla</p>
<p class="b">Bla Bla</p>
<p class="c">Bla Bla</p>

<p class="a">Bla Bla</p>
<p class="b">Bla Bla</p>
<p class="c">Bla Bla</p>
</div>
</body>
<html>
Si quieres miralo aqui

Se aplica a a la vez a todos.

  #6 (permalink)  
Antiguo 19/11/2008, 13:26
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Cambiar clase (o solo background) a varios elementos al onclick

Fíjate que en los dos párrafos estás asignando la misma clase al contenedor, lo cual está mal. Además, en los estilos, solo necesitas asignar el color a la respectiva clase, así los demás tomarán el color definido por defecto, por ejemplo:
Código css:
Ver original
  1. .tipoA .a {background-color: #0F0;}
  2.  
  3. .tipoB .b {background-color: #0F0;}
  4.  
  5. .tipoC .c {background-color: #0F0;}
__________________
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 09:35.