Foros del Web » Programando para Internet » Javascript »

Unir getElementsByTagName

Estas en el tema de Unir getElementsByTagName en el foro de Javascript en Foros del Web. Hola a tod@s Ando buscando la forma de unir dos colecciones de objetos resultantes de getElementsByTagName. No se mucho de javascript, así que creí que ...
  #1 (permalink)  
Antiguo 12/02/2009, 09:16
 
Fecha de Ingreso: junio-2008
Mensajes: 71
Antigüedad: 15 años, 10 meses
Puntos: 0
Unir getElementsByTagName

Hola a tod@s

Ando buscando la forma de unir dos colecciones de objetos resultantes de getElementsByTagName.

No se mucho de javascript, así que creí que usando concat o push me serviría y no anda.

Código javascript:
Ver original
  1. a = document.getElementsByTagName('div');
  2.                     b = document.getElementsByTagName('p');
  3.                     a = a.concat(b);

También probé a ver si podía aceptar más de una "etiqueta" como parámetro y devolverlo todo, así fue intenté y tampoco nada.

Código javascript:
Ver original
  1. a = document.getElementsByTagName('a', 'span');
  2. // o asi
  3.                     a = document.getElementsByTagName('a, span');

¿alguien sabe como es posible hacer lo que busco?

Gracias adelantadas.
  #2 (permalink)  
Antiguo 12/02/2009, 10:03
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Unir getElementsByTagName

Fijate si te sirve:
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=iso-8859-1" />
  5. <title>test</title>
  6. <script>
  7. function unir(){
  8.     var b=[];
  9.     for(var i=0;i< arguments.length;i++){
  10.         ii=0;
  11.         while (document.getElementsByTagName(arguments[i])[ii]){
  12.             b.push(document.getElementsByTagName(arguments[i])[ii]);
  13.             ii++;
  14.         }
  15.     }
  16.     return b;
  17. }
  18. onload=function(){
  19.     var x=unir('a','span');
  20.     alert(x[0].nodeName+'-'+x[2].nodeName+'-'+x[7].nodeName)
  21. }
  22. </script>
  23.  
  24. </head>
  25.  
  26. <body>
  27. <span>a</span><a href="#">b</a><span>a</span><a href="#">b</a><span>a</span><a href="#">b</a><span>a</span><a href="#">b</a>
  28. </body>
  29. </html>
  #3 (permalink)  
Antiguo 12/02/2009, 10:45
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Unir getElementsByTagName

O:
Código javascript:
Ver original
  1. <script>
  2. onload=function(){
  3.     var b=[].slice.call(document.getElementsByTagName('span')).concat([].slice.call(document.getElementsByTagName('a')));
  4.     alert(b.length)
  5. }
  6. </script>
  #4 (permalink)  
Antiguo 12/02/2009, 10:45
 
Fecha de Ingreso: junio-2008
Mensajes: 71
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Unir getElementsByTagName

Muchas gracias, si ha funcionado

Y ahora entiendo porque antes cuando intenté por mi cuenta usando el push no sirvió para nada, es porque no debo aplicarlo a los getElementsByTagName de un tajo, sino aplicarlo de objeto en objeto que contenga.

Una vez más gracias
  #5 (permalink)  
Antiguo 12/02/2009, 11:10
 
Fecha de Ingreso: junio-2008
Mensajes: 71
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Unir getElementsByTagName

El primero lo he dejado asi

Código javascript:
Ver original
  1. var tagname = new Array('div', 'p');
  2.     var fulltagobject=[];
  3.     for (i in tagname)
  4.         for (ii in b = document.getElementsByTagName(tagname[i]))
  5.             fulltagobject.push(b[ii]);

La segunda respuesta no la había llegado a ver, pero la probé y también funcionó, y es un obra maestra .

Aún debo revisarla despacio a ver si la entiendo, muchas gracias una vez más.
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 20:07.