Foros del Web » Programando para Internet » Javascript »

recorrer elementos con getElements..

Estas en el tema de recorrer elementos con getElements.. en el foro de Javascript en Foros del Web. Hola! necesito recorrer una serie de celdas dentro de mi pagina. Lo mas intuitivo era utilizar getElementsByName("nombreDeCelda"); y asi obtener todas las celdas con ese ...
  #1 (permalink)  
Antiguo 25/01/2006, 03:05
 
Fecha de Ingreso: octubre-2005
Mensajes: 53
Antigüedad: 18 años, 6 meses
Puntos: 1
recorrer elementos con getElements..

Hola!

necesito recorrer una serie de celdas dentro de mi pagina.

Lo mas intuitivo era utilizar getElementsByName("nombreDeCelda"); y asi obtener todas las celdas con ese nombre..

pero no puede ser ya que las celdas <TD> no tienen atributo name.

El primer truki que he encontrado es utilizar el id en vez de el atributo name y utilizar tambien la funcion getElementsByName("idCelda"), y asi te devuelve todas las celdas con ese id.

Pero ese truki solo funciona en IE, asi que como que no es muy valido..

alguna idea de como puedo recorrer las celdas??

saludos y gracias!
  #2 (permalink)  
Antiguo 25/01/2006, 03:25
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola:

Pues hay algunos "truquillos"...

Para celdas tienes la colección getElementsByTagName("td")...

Pero también puedes excluir las celdas de tablas que no quieras recorrer haciéndolo colgar del contenedor adecuado (no es obligatorio que cuelgue de document...

var misCeldas = document.getElementById("miTabla").getElementsByTa gName("td");

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 25/01/2006, 03:51
 
Fecha de Ingreso: octubre-2005
Mensajes: 53
Antigüedad: 18 años, 6 meses
Puntos: 1
Pues, podria ser una opcion buena caricatos,

pero en mi caso no me soluciona mucho ya que deberia tener todas las celdas en esa tabla y no puede ser ya que imaginate que la pagina esta llena de tablas y celdas y yo quiero recorrer solo unas celdas en concreto y cada celda esta en una tabla distinta.. aunque las agrupase seriguiria recorriendo mas celdas de las debidas.

Un ejemplo de la problematica, cada vez que pincho en una celda cambio su icono ok? pero tambien debo cambiar el icono de otra celda que representa lo mismo. Si cada vez que pincho en una me tengo que recorrer mas de 1000 celdas para encontrar sus "dobles" me parece que no sera muy eficiente..

al final estoy viendo que tendre que apañarmelas para obtener un id unico para cada celda.. pero bueno.. haber si se os ocurre algo mas..

saludos.
  #4 (permalink)  
Antiguo 25/01/2006, 04:07
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola otra vez...

Como te comenté antes hay "algunos truquillos"... Pues entonces la colección debería colgar de document, pero siempre dependerá de como agrupar los datos... Las colecciones se hacen por name (que en explorer cambia por el id ... aunque no se "deba" repetir), y tagName que funciona bien en todos los navegadores modernos, y creo que es lo más fiable... aunque dentro de esa colección estes obligado a recorrer todos los elementos (celdas), luego podrías depurar la selección mediante otra atributo que no sea trascendente (aunque tal vez no recomendable), por ejemplo la clase (u algun atributo inventado, que no validaría... por si te interesa...)

Con el tema de las clases, puedes definir por ejemplo:

.claseTonta {
cursor: default;
}

y por cada celda seleccionar la que sea con:
if celda.className == "claseTonta")...

Y otra, y tal vez sea la mejor, es tener un array con los identificadores únicos (id) y usar un bucle para recorrerlo...

var celdasPares = ["celda2", "celda4", "celda6"];
var celdasNones = ["celda1", "celda3", "celda5"];

y con el bucle...

for (var i = 0, total = celdasPares.length; i < total; i ++)
document.getElementById(celdasPares[i])...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 25/01/2006, 06:02
 
Fecha de Ingreso: octubre-2005
Mensajes: 53
Antigüedad: 18 años, 6 meses
Puntos: 1
Esta claro, al final no me queda otra que hacerlo con ids unicos para cada celda...

me sale un poco mas complejo todo pero bueno.. parace que es la unica opcion.

saludos y muchas gracias!
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 16:35.