Foros del Web » Programando para Internet » Javascript »

como puedo cambiar la clase en todos los div con javascript

Estas en el tema de como puedo cambiar la clase en todos los div con javascript en el foro de Javascript en Foros del Web. como puedo cambiar la clase en todos los divs con javascript, sin tener que estar repitiendo el código, este código funciona bien, lo que no ...
  #1 (permalink)  
Antiguo 17/12/2011, 09:45
Avatar de jor_0203  
Fecha de Ingreso: octubre-2011
Ubicación: mexico
Mensajes: 760
Antigüedad: 12 años, 6 meses
Puntos: 8
como puedo cambiar la clase en todos los div con javascript

como puedo cambiar la clase en todos los divs con javascript, sin tener que estar repitiendo el código, este código funciona bien, lo que no me gusta es que tengo que repetir el código, ya que el id es único para cosa, entonces no se como puede jalar todo divs y ponerlo solo a una clase.
ojala alguien me pueda ayudar


Código Javascript:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Documento sin t&iacute;tulo</title>
  6. <script type="text/javascript">
  7. function camcio_clase_masivo(){
  8. document.getElementById("d").className="a2";
  9. }  
  10. </script>
  11. <style type="text/css">
  12. <!--
  13. .a {
  14.     background-color: #FFCC33;
  15.     border: thin solid #000000;
  16. }
  17.  
  18. .a2 {
  19.     background-color: #999999;
  20.    
  21. }
  22. -->
  23. </style>
  24. </head>
  25. <body>
  26. <div id="d" class="a">Como cambiar todos los class="a" con javascript</div>
  27. <div class="a">Como cambiar todos los class="a" con javascript</div>
  28. <div class="a">Como cambiar todos los class="a" con javascript</div>
  29. <div class="a">Como cambiar todos los class="a" con javascript</div>
  30. <div class="a">Como cambiar todos los class="a" con javascript</div>
  31. <input name="" type="button" value="cambia la class para todos" onclick="camcio_clase_masivo()" />
  32. </body>
  33. </html>
  #2 (permalink)  
Antiguo 17/12/2011, 10:46
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: como puedo cambiar la clase en todos los div con javascript

buenas,
intenta con el método getElementsByClassName el cual te devuelve una colección de elementos con la clase que indiques. luego lo iteras en un bucle para trabajar con ellos.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 17/12/2011, 15:32
Avatar de Trublux  
Fecha de Ingreso: octubre-2010
Ubicación: Madrid
Mensajes: 355
Antigüedad: 13 años, 6 meses
Puntos: 48
Respuesta: como puedo cambiar la clase en todos los div con javascript

Hola.
Puedes hacerlo con JQuery aunque si no lo usas para más cosas es mejor hacerlo con JavaScript "puro":
Código Javascript:
Ver original
  1. $(function(){
  2.     $('div').addClass('a2');
  3. });
__________________
eZ Publish Developer Basic Legacy
eZ Publish Developer Basics (4.4)
Alojamientos rurales en España
  #4 (permalink)  
Antiguo 17/12/2011, 15:59
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: como puedo cambiar la clase en todos los div con javascript

Cita:
Iniciado por zerokilled Ver Mensaje
buenas,
intenta con el método getElementsByClassName el cual te devuelve una colección de elementos con la clase que indiques. luego lo iteras en un bucle para trabajar con ellos.
el problema es que getElementsByClassName() no existe para ie y habría que crear una función para tal caso. así que yo propondría usar querySelectorAll()
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #5 (permalink)  
Antiguo 17/12/2011, 16:11
 
Fecha de Ingreso: diciembre-2011
Mensajes: 26
Antigüedad: 12 años, 4 meses
Puntos: 4
Respuesta: como puedo cambiar la clase en todos los div con javascript

jQuery amigo es muy sencillo asi

Código Javascript:
Ver original
  1. $(document).ready {
  2.    $("div").attr ("class", "a");
  3. }

y listo eso s todo
  #6 (permalink)  
Antiguo 18/12/2011, 09:16
Avatar de jor_0203  
Fecha de Ingreso: octubre-2011
Ubicación: mexico
Mensajes: 760
Antigüedad: 12 años, 6 meses
Puntos: 8
Respuesta: como puedo cambiar la clase en todos los div con javascript

hola isabel lo hice así pero no funciona en explorer
que puedo hacer


Código Javascript:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Documento sin t&iacute;tulo</title>
  6. <script type="text/javascript">
  7. function desaparecer(pes) {
  8.     document.getElementById(pes.id).className=" a2";
  9. var capas = document.getElementsByClassName('a');
  10.     for(var i = 0; capas[i]; i++)
  11.     {
  12.         capas[i].style.display = "none";
  13.    
  14.     }
  15.    
  16. }
  17. </script>
  18. <style type="text/css">
  19. <!--
  20. .a{
  21.     background-color: #FFCC33;
  22.     border: thin solid #000000;
  23. }
  24. .a2{
  25.     background-color: #0033CC;
  26.     border: thin solid #000000;
  27.     display:block;
  28.    
  29. }
  30. -->
  31. </style>
  32. </head>
  33. <body >
  34. <div id="jjj" class="a" onclick="desaparecer(this)">1 cambiar y da click </div>
  35. <div id="dos" class="a" onclick="desaparecer(this)">2 cambiar y da click</div>
  36. <div id="tres" class="a" onclick="desaparecer(this)">3 cambiar y da click</div>
  37. <div id="cuatro" class="a" onclick="desaparecer(this)">4 cambiar y da click</div>
  38. <div id="cinco" class="a" onclick="desaparecer(this)">5 cambiar y da click</div>
  39.  
  40. </body>
  41. </html>
  #7 (permalink)  
Antiguo 18/12/2011, 10:06
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: como puedo cambiar la clase en todos los div con javascript

sigue la sugerencia de @isabelm, utiliza querySelectorAll. al menos desde iexplorer8 esta disponible al igual que en otros navegadores (firefox, chrome).
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #8 (permalink)  
Antiguo 18/12/2011, 14:20
Avatar de jor_0203  
Fecha de Ingreso: octubre-2011
Ubicación: mexico
Mensajes: 760
Antigüedad: 12 años, 6 meses
Puntos: 8
Respuesta: como puedo cambiar la clase en todos los div con javascript

Cita:
Iniciado por zerokilled Ver Mensaje
sigue la sugerencia de @isabelm, utiliza querySelectorAll. al menos desde iexplorer8 esta disponible al igual que en otros navegadores (firefox, chrome).
no hay otra forma de hacerlo, para que agarre todos los navegadores
con otro código
pero que haga lo mismo pero en todos loa navegadores
  #9 (permalink)  
Antiguo 18/12/2011, 14:59
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: como puedo cambiar la clase en todos los div con javascript

¿a qué le llamas todos los navegadores? versiones. en lo personal, en el caso de iexplorer no veo porque darle soporte a las versiones iexplorer7 y anteriores. de todos modos, mirad este sitio el cual muestra una tabla de los navegadores y versiones que soportan ciertas características. por ejemplo, ahí puedes ver la compatibilidad de getelementsbyclassname y queryselectorall. http://caniuse.com/

por otro lado, cuando necesites compatibilidad porque alguna versión o navegador no soporte algo, trata buscar un polyfill. por ejemplo, polyfill getElementsByClassName.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #10 (permalink)  
Antiguo 18/12/2011, 15:01
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: como puedo cambiar la clase en todos los div con javascript

probá con esta, funciona en IE8+ y el resto de los browsers

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>Cambiar estilo en clases</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6. <style type="text/css">
  7. /*<![CDATA[*/
  8. .uno {
  9. color: blue;
  10. }
  11. /*]]>*/
  12. <script type="text/javascript">
  13. //<![CDATA[
  14. function procesarDivs(){
  15. var losdivs = document.getElementsByTagName("div");
  16. for (var i=0; i < losdivs.length; i++){
  17.   if (losdivs[i].getAttribute('class') == 'uno'){
  18.     losdivs[i].style.color ='red';
  19.   }
  20. }
  21. }
  22. //]]>
  23. </head>
  24. <div class="uno">
  25. Texto 1
  26. </div>
  27. <div class="dos">
  28. Texto 2
  29. </div>
  30. <div class="uno">
  31. Texto 3
  32. </div>
  33. <div class="dos">
  34. Texto 4
  35. </div>
  36. <p class="uno">
  37. Texto 5 (en un párrafo)
  38. </p>
  39. <p>
  40. <button onclick="procesarDivs();">buscar divs con class uno y cambiar el color</button>
  41. </p>
  42. </body>
  43. </html>

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #11 (permalink)  
Antiguo 18/12/2011, 15:22
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: como puedo cambiar la clase en todos los div con javascript

En una sóla línea:
Código Javascript:
Ver original
  1. [].slice.call(document.querySelectorAll('div')).forEach(function(div){ div.className += ' clase'; });
Saludos.
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #12 (permalink)  
Antiguo 18/12/2011, 15:27
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: como puedo cambiar la clase en todos los div con javascript

Cita:
Iniciado por _cronos2 Ver Mensaje
En una sóla línea:
Código Javascript:
Ver original
  1. [].slice.call(document.querySelectorAll('div')).forEach(function(div){ div.className += ' clase'; });
Saludos.
ni que te cobraran por líneas de código
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #13 (permalink)  
Antiguo 18/12/2011, 16:56
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: como puedo cambiar la clase en todos los div con javascript

Cita:
Iniciado por IsaBelM Ver Mensaje
ni que te cobraran por líneas de código
Era para que vea que no hay tanta complicación
<offtopic> Creo que la Merkel ha comentado algo sobre poner un impuesto por esto también </offtopic>
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #14 (permalink)  
Antiguo 18/12/2011, 18:19
Avatar de jor_0203  
Fecha de Ingreso: octubre-2011
Ubicación: mexico
Mensajes: 760
Antigüedad: 12 años, 6 meses
Puntos: 8
Respuesta: como puedo cambiar la clase en todos los div con javascript

Cita:
Iniciado por _cronos2 Ver Mensaje
En una sóla línea:
Código Javascript:
Ver original
  1. [].slice.call(document.querySelectorAll('div')).forEach(function(div){ div.className += ' clase'; });
Saludos.
pero esto como la uso
con el ultimo ejemplo que mande
mil gracias
  #15 (permalink)  
Antiguo 18/12/2011, 18:38
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: como puedo cambiar la clase en todos los div con javascript

La función cambia cualquier elemento que tenga la clase .uno, asignándole la clase .nuevocolor (esta última tine que estar en tu css)


Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>Cambiar estilo en clases</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6. <style type="text/css">
  7. /*<![CDATA[*/
  8. .uno {
  9. color: blue;
  10. }
  11. .nuevocolor {
  12. color: green;
  13. }
  14. /*]]>*/
  15. <script type="text/javascript">
  16. //<![CDATA[
  17. function procesarSelector(){
  18. [].slice.call(document.querySelectorAll('.uno')).forEach(function(elemento){
  19.     elemento.className += ' nuevocolor';
  20. });
  21. }
  22. //]]>
  23. </head>
  24. <div class="uno">
  25. Texto 1
  26. </div>
  27. <div class="dos">
  28. Texto 2
  29. </div>
  30. <div class="uno">
  31. Texto 3
  32. </div>
  33. <div class="dos">
  34. Texto 4
  35. </div>
  36. <p class="uno">
  37. Texto 5 (en un párrafo)
  38. </p>
  39. <p>
  40. <button onclick="procesarSelector();">buscar tags con class uno y cambiar el color</button>
  41. </p>
  42. </body>
  43. </html>

Podrías hacer que cambie todos las etiquetas "div", pero es má flexible si le das una clase específica a los elementos que querés cambiar.

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #16 (permalink)  
Antiguo 18/12/2011, 19:02
Avatar de jor_0203  
Fecha de Ingreso: octubre-2011
Ubicación: mexico
Mensajes: 760
Antigüedad: 12 años, 6 meses
Puntos: 8
Respuesta: como puedo cambiar la clase en todos los div con javascript

Cita:
Iniciado por emprear Ver Mensaje
La función cambia cualquier elemento que tenga la clase .uno, asignándole la clase .nuevocolor (esta última tine que estar en tu css)


Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>Cambiar estilo en clases</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6. <style type="text/css">
  7. /*<![CDATA[*/
  8. .uno {
  9. color: blue;
  10. }
  11. .nuevocolor {
  12. color: green;
  13. }
  14. /*]]>*/
  15. <script type="text/javascript">
  16. //<![CDATA[
  17. function procesarSelector(){
  18. [].slice.call(document.querySelectorAll('.uno')).forEach(function(elemento){
  19.     elemento.className += ' nuevocolor';
  20. });
  21. }
  22. //]]>
  23. </head>
  24. <div class="uno">
  25. Texto 1
  26. </div>
  27. <div class="dos">
  28. Texto 2
  29. </div>
  30. <div class="uno">
  31. Texto 3
  32. </div>
  33. <div class="dos">
  34. Texto 4
  35. </div>
  36. <p class="uno">
  37. Texto 5 (en un párrafo)
  38. </p>
  39. <p>
  40. <button onclick="procesarSelector();">buscar tags con class uno y cambiar el color</button>
  41. </p>
  42. </body>
  43. </html>

Podrías hacer que cambie todos las etiquetas "div", pero es má flexible si le das una clase específica a los elementos que querés cambiar.

Saludos
lo voy a probar hoy
mil gracias estoy impresionado
que dios te bendiga
  #17 (permalink)  
Antiguo 19/12/2011, 01:40
Avatar de jor_0203  
Fecha de Ingreso: octubre-2011
Ubicación: mexico
Mensajes: 760
Antigüedad: 12 años, 6 meses
Puntos: 8
Respuesta: como puedo cambiar la clase en todos los div con javascript

Cita:
Iniciado por emprear Ver Mensaje
La función cambia cualquier elemento que tenga la clase .uno, asignándole la clase .nuevocolor (esta última tine que estar en tu css)


Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>Cambiar estilo en clases</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6. <style type="text/css">
  7. /*<![CDATA[*/
  8. .uno {
  9. color: blue;
  10. }
  11. .nuevocolor {
  12. color: green;
  13. }
  14. /*]]>*/
  15. <script type="text/javascript">
  16. //<![CDATA[
  17. function procesarSelector(){
  18. [].slice.call(document.querySelectorAll('.uno')).forEach(function(elemento){
  19.     elemento.className += ' nuevocolor';
  20. });
  21. }
  22. //]]>
  23. </head>
  24. <div class="uno">
  25. Texto 1
  26. </div>
  27. <div class="dos">
  28. Texto 2
  29. </div>
  30. <div class="uno">
  31. Texto 3
  32. </div>
  33. <div class="dos">
  34. Texto 4
  35. </div>
  36. <p class="uno">
  37. Texto 5 (en un párrafo)
  38. </p>
  39. <p>
  40. <button onclick="procesarSelector();">buscar tags con class uno y cambiar el color</button>
  41. </p>
  42. </body>
  43. </html>

Podrías hacer que cambie todos las etiquetas "div", pero es má flexible si le das una clase específica a los elementos que querés cambiar.

Saludos
en explorer no funciona
  #18 (permalink)  
Antiguo 19/12/2011, 07:40
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: como puedo cambiar la clase en todos los div con javascript

forEach no existe en ie y para no complicar mucho mas la cosa
Cita:
function procesarSelector(){
selector = document.querySelectorAll('.uno');
for(elemento in selector) {
selector[elemento].className += ' nuevocolor';
}
}
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #19 (permalink)  
Antiguo 19/12/2011, 08:45
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: como puedo cambiar la clase en todos los div con javascript

Cita:
Iniciado por jor_0203 Ver Mensaje
en explorer no funciona
Cita:
Iniciado por IsaBelM Ver Mensaje
y para no complicar mucho mas la cosa
Muerte a IE.
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #20 (permalink)  
Antiguo 19/12/2011, 08:57
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: como puedo cambiar la clase en todos los div con javascript

Cita:
Iniciado por _cronos2 Ver Mensaje
Muerte a IE.
o al menos que se suicide, para que no quede en nuestras conciencia

parece que el problema está en que no existe el método forEach(), tampoco getElementsByClassName. que co** muerte a ie!!
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #21 (permalink)  
Antiguo 19/12/2011, 11:27
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: como puedo cambiar la clase en todos los div con javascript

entonces usá
http://www.forosdelweb.com/f13/como-...4/#post4071601

Solo NO funciona en IE7
El 2º método funciona a partir de IE9

__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #22 (permalink)  
Antiguo 19/12/2011, 11:37
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: como puedo cambiar la clase en todos los div con javascript

Cita:
Iniciado por emprear Ver Mensaje
entonces usá
http://www.forosdelweb.com/f13/como-...4/#post4071601

Solo NO funciona en IE7
El 2º método funciona a partir de IE9

¿Y por qué no funciona en IE7? No le veo nada raro
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #23 (permalink)  
Antiguo 19/12/2011, 11: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: como puedo cambiar la clase en todos los div con javascript

Hola:

Cita:
Iniciado por _cronos2 Ver Mensaje
¿Y por qué no funciona en IE7? No le veo nada raro
Saludos (:

Código:
   if (losdivs[i].getAttribute('class') == 'uno'){
    losdivs[i].style.color ='red';
Estoy seguro que el problem es : losdivs[i].getAttribute('class')...

Algo que funciona desde tiempos inmemoriales es:

losdivs[i].className...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #24 (permalink)  
Antiguo 19/12/2011, 11:45
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: como puedo cambiar la clase en todos los div con javascript

Cita:
¿Y por qué no funciona en IE7? No le veo nada raro
Saludos (:
si bien recuerdo, hasta la versión iexplorer7, el método getAttribute/setAttribute estaba mal implementado. particularmente, en lugar del método recibir el nombre de un atributo tal cual, parece que admitía más el nombre de una propiedad. de modo que en lugar de pasar como valor "class", tenias que pasar el equivalente en javascript: "className". de todos modos, se puede corregir simplemente prescindiendo de los métodos por el uso directo de las propiedades. de momento es lo único que veo que pudiera fallar.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #25 (permalink)  
Antiguo 19/12/2011, 11:49
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: como puedo cambiar la clase en todos los div con javascript

IE7
El objeto no acepta la propiedad o el método 'querySelectorAll'

IE8
Array.prototype.slice: 'this' no es un objeto JavaScript

Vi un poco por arriba posibles soluciones, pero nuestro "código de una línea" se desvanece.

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #26 (permalink)  
Antiguo 19/12/2011, 11:58
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: como puedo cambiar la clase en todos los div con javascript

Correcta la observación de @caricatos

con
function procesarDivs(){
var losdivs = document.getElementsByTagName("div");
for (var i=0; i < losdivs.length; i++){
if (losdivs[i].className == 'uno'){
losdivs[i].style.color ='red';
}
}
}

en substitución de

if (losdivs[i].getAttribute('class') == 'uno'){

funciona correctamente incluso en IE7

En cuanto a

[].slice.call(document.querySelectorAll('.uno')).for Each(function(elemento){ elemento.className += ' nuevocolor'; });

los errores son los que señalé antes

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #27 (permalink)  
Antiguo 19/12/2011, 12:28
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: como puedo cambiar la clase en todos los div con javascript

lo que comenta zerokilled
Cita:
alert(typeof(losdivs[i].getAttribute('className'))) // string
alert(typeof(losdivs[i].getAttribute('class'))) // objeto
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #28 (permalink)  
Antiguo 19/12/2011, 12:41
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: como puedo cambiar la clase en todos los div con javascript

Cita:
Iniciado por caricatos Ver Mensaje
Hola:

Código:
   if (losdivs[i].getAttribute('class') == 'uno'){
    losdivs[i].style.color ='red';
Estoy seguro que el problem es : losdivs[i].getAttribute('class')...

Algo que funciona desde tiempos inmemoriales es:

losdivs[i].className...

Saludos
Cita:
Iniciado por zerokilled Ver Mensaje
si bien recuerdo, hasta la versión iexplorer7, el método getAttribute/setAttribute estaba mal implementado. particularmente, en lugar del método recibir el nombre de un atributo tal cual, parece que admitía más el nombre de una propiedad. de modo que en lugar de pasar como valor "class", tenias que pasar el equivalente en javascript: "className". de todos modos, se puede corregir simplemente prescindiendo de los métodos por el uso directo de las propiedades. de momento es lo único que veo que pudiera fallar.
Lo que me imaginaba, getAttribute, no podía ser otra cosa >.<

Cita:
Iniciado por emprear Ver Mensaje
En cuanto a

[].slice.call(document.querySelectorAll('.uno')).for Each(function(elemento){ elemento.className += ' nuevocolor'; });

los errores son los que señalé antes

Saludos
Bueno, esto estaba claro desde un principio que no iba a funcionar por debajo de IE8, y por el forEach diría que ni siquiera en este.
Sin embargo me extraña el error de que "this no es un objeto JavaScript". Según yo lo entiendo, el error se produce en el Array.prototype.slice, que es para pasar de NodeList a array. Claro, las implementaciones del DOM son vendor specific, así que podría ser que algo fallara por la manera en que está construido; sin embargo si es IE8 estoy seguro de que funciona, o al menos funcionaba.
La verdad no sé dónde está el error, pero teniendo en cuenta que es IE, vete tú a saber
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #29 (permalink)  
Antiguo 19/12/2011, 12:59
Avatar de ryugen
Colaborador
 
Fecha de Ingreso: agosto-2008
Ubicación: Rosario, Santa Fe
Mensajes: 350
Antigüedad: 15 años, 7 meses
Puntos: 187
Respuesta: como puedo cambiar la clase en todos los div con javascript

Soy de la idea de siempre ver como personas que ya han resuelto el problema, lo han hecho
Código Javascript:
Ver original
  1. addClass: function( value ) {
  2.         var classNames, i, l, elem,
  3.             setClass, c, cl;
  4.  
  5.         if ( jQuery.isFunction( value ) ) {
  6.             return this.each(function( j ) {
  7.                 jQuery( this ).addClass( value.call(this, j, this.className) );
  8.             });
  9.         }
  10.  
  11.         if ( value && typeof value === "string" ) {
  12.             classNames = value.split( rspace );
  13.  
  14.             for ( i = 0, l = this.length; i < l; i++ ) {
  15.                 elem = this[ i ];
  16.  
  17.                 if ( elem.nodeType === 1 ) {
  18.                     if ( !elem.className && classNames.length === 1 ) {
  19.                         elem.className = value;
  20.  
  21.                     } else {
  22.                         setClass = " " + elem.className + " ";
  23.  
  24.                         for ( c = 0, cl = classNames.length; c < cl; c++ ) {
  25.                             if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) {
  26.                                 setClass += classNames[ c ] + " ";
  27.                             }
  28.                         }
  29.                         elem.className = jQuery.trim( setClass );
  30.                     }
  31.                 }
  32.             }
  33.         }
  34.  
  35.         return this;
  36.     }

Esa es la solucion de jquery, donde value, es la clase que queremos agregar y this es un arreglo con los elementos que queremos modificar.

Obviamente que el script tiene chequeos que de acuerdo a ciertas pre-condiciones o no podemos obviar. Por ejemplo que value sea un string.

Etiquetas: clase, funcion, html, input
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 17:21.