Foros del Web » Programando para Internet » Javascript »

Problemas con document.getElementsByName

Estas en el tema de Problemas con document.getElementsByName en el foro de Javascript en Foros del Web. Hola a todos: tengo un error que no acabo de ver. Quiero recorrerme la coleccion de tabala scon el mismo nombre pero me devuleve un ...
  #1 (permalink)  
Antiguo 28/05/2004, 05:04
 
Fecha de Ingreso: julio-2003
Mensajes: 132
Antigüedad: 20 años, 9 meses
Puntos: 0
Mensaje Problemas con document.getElementsByName

Hola a todos:
tengo un error que no acabo de ver. Quiero recorrerme la coleccion de tabala scon el mismo nombre pero me devuleve un array vacio el metodo getElementsByName del objeto document. A alguien se le ocurre por que pede ser?

Un saludo y gracias de antemano


<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>


<TABLE cellSpacing=1 name="t2" cellPadding=1 width="75%" border=1>

<TR>
<TD></TD>
<TD></TD>
<TD></TD>
</TR>
</TABLE>

<TABLE cellSpacing=1 name="t2" cellPadding=1 width="75%" border=1>

<TR>
<TD></TD>
<TD></TD>
<TD></TD>
</TR>
</TABLE>

</BODY>
</HTML>
<script>
alert(document.getElementsByName("t2").length )
</script>
  #2 (permalink)  
Antiguo 28/05/2004, 05:18
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 3 meses
Puntos: 772
Hola, LastN.

¿Puede ser que lo estés probando con Internet Explorer? Es que el susodicho lo que busca son los id Mi consejo es que lo pongas de esta forma:

<TABLE cellSpacing=1 name="t2" id="t2" cellPadding=1 width="75%" border=1>

Así creo que no deberías tener problemas en ningún explorador.

Saludos,
  #3 (permalink)  
Antiguo 28/05/2004, 05:24
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Pregunta length?

Las tablas tienen propiedad length ? que devuelve?
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #4 (permalink)  
Antiguo 28/05/2004, 05:33
 
Fecha de Ingreso: julio-2003
Mensajes: 132
Antigüedad: 20 años, 9 meses
Puntos: 0
Mensaje a vueltas con el IE ...

A ver Drekenuke:
La propiedad length es del array que en teoria me deberiá devilver el navegador con todos los objetos que coincidan con ese nombre.
JavierB
Efectivamente estoy probando en un IExplorer y tienes tyoda al razón. En un mozilla funciona perfectamente. El problema es que necesito identificar de manera uncica cada tabla y de alguna manera relacionarlas enconjunto. Mi idea es asignar a cada una un id diferente y un nombre comun.
Me tendré que montar algún invento.
¿Te has isto en esta situación alguna otra vez?

Gracias de antemano
  #5 (permalink)  
Antiguo 28/05/2004, 05:38
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Mmm, a mi si me ha pasado. Lo que he hecho (siempre han sido pocos elementos) ha sido recorrer todos los elementos con el mismo tag (getElementsByTagName) e ir verificando si alguno cumple alguna condicion (por ejemplo que su atributo name, o id comience por algo predefinido). Si cumple se añade un array (que sera trabajado mas tarde). No se me ha ocurrido nada mejor hasta el momento. Eso sí, si son muchos elementos ya...
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #6 (permalink)  
Antiguo 28/05/2004, 05:46
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 5 meses
Puntos: 61
No sé si esto te servirá!
Código PHP:
<html>
<
head>

    <
title>Untitled</title>
</
head>

<
body>
<
HTML>
<
HEAD>
<
TITLE></TITLE>
</
HEAD>
<
BODY>

<
TABLE cellSpacing=1 name="t2" cellPadding=1 width="75%" border=1>

<
TR>
<
TD></TD>
<
TD></TD>
<
TD></TD>
</
TR>
</
TABLE>

<
TABLE cellSpacing=1 name="t2" cellPadding=1 width="75%" border=1>

<
TR>
<
TD></TD>
<
TD></TD>
<
TD></TD>
</
TR>
</
TABLE>

<
TABLE cellSpacing=1 name="federico" cellPadding=1 width="75%" border=1>

<
TR>
<
TD></TD>
<
TD></TD>
<
TD></TD>
</
TR>
</
TABLE>

</
BODY>
</
HTML>
<
script>
numero=0;
tablas=document.getElementsByTagName("table").length;
for(
a=0;a<tablas;a++){
if(
document.getElementsByTagName("table")[a].name=="t2"){
tablat2=new Array;
tablat2[numero]=document.getElementsByTagName('table')[a];

numero+=1
}

}
alert(numero);
</script>

</body>
</html> 
Así metes las tablas con mismo name en un array...
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.

Última edición por KarlanKas; 28/05/2004 a las 05:50
  #7 (permalink)  
Antiguo 28/05/2004, 05:49
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Información

Mas o menos lo que yo decia Karlankas . Permiteme una modificacion, la creacion de tablat2 (tablat2=new Array;) ¿no deberia ir fuera del bucle?

He probado este codigo en IE y en NS y funciona, la solucion de JavierB:

Código HTML:
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>

<TABLE cellSpacing=1 id="t2" name="t2" cellPadding=1 width="75%" border=2>
<TR>
<TD>a</TD>
<TD>b</TD>
<TD>c</TD>
</TR>
</TABLE>

<TABLE cellSpacing=1 id="t2" name="t2" cellPadding=1 width="75%" border=1>
<TR>
<TD>d</TD>
<TD>e</TD>
<TD>f</TD>
</TR>
</TABLE>

</BODY>
</HTML>
<script>
alert(document.getElementsByName("t2").length )
</script> 
Aun con el dilema moral que supone tener que llamar a dos elementos con el mismo id .

__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #8 (permalink)  
Antiguo 28/05/2004, 05:57
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Pues la teoría dice que no pueden existir dos elementos (o más) con el mismo id.

Si se hace, pues se queda en el primero que encuentra
  #9 (permalink)  
Antiguo 28/05/2004, 05:58
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 5 meses
Puntos: 61
Tienes toda la razón... las prisas...

Si tuviesen el mismo color de fondo serviría... y no habría que poner el mismo id (o name)
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #10 (permalink)  
Antiguo 28/05/2004, 05:59
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 5 meses
Puntos: 61
Hola Leporciaa!!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #11 (permalink)  
Antiguo 28/05/2004, 06:03
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Cita:
Iniciado por KarlanKas
Hola Leporciaa!!
... jé holaaaaa


Bueno, regresando al tema que nos ocupa, yo creo que lo que propuso derdenuke de usar el getElementsByTagName es tal vez lo más práctico.

Por ejemplo, usar un

for(m=0; m<document.getElementsByTagName("table").length; m++){
if(document.getElementsByTagName("table")[m].name == "t2"){
lo que sea
}
}

¿no?
  #12 (permalink)  
Antiguo 28/05/2004, 06:07
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 5 meses
Puntos: 61
No había leido la respuesta de derdenuke anterior a la mia... parece ser que pensabamos lo mismo...

Te me adelantaaste derdenuke. Yo tb pienso que tu propuesta es la mejor!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #13 (permalink)  
Antiguo 28/05/2004, 06:09
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 3 meses
Puntos: 772
Cita:
Iniciado por tunait
¿no?
Si.

Saludos,

P.D. Como de dijo una vez KarlanKas (¡Hola! ) Sacate esa zapatilla de la boca, que no puede ser bueno (o algo así)
  #14 (permalink)  
Antiguo 28/05/2004, 06:22
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 5 meses
Puntos: 61
Es que es una porquería! se pueden coger enfermedades e infecciones!!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #15 (permalink)  
Antiguo 28/05/2004, 07:18
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45


PD: Pero leeros mejor mi nick que es largo y..

__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
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 02:10.