Foros del Web » Programando para Internet » Javascript »

Comportamiento "extraño" de DOM

Estas en el tema de Comportamiento "extraño" de DOM en el foro de Javascript en Foros del Web. Buenos dias a todos! Este es mi primer post en el foro, suelo casi siempre encontrar una solución a mis problemas en este foro, pero ...
  #1 (permalink)  
Antiguo 29/07/2009, 05:19
 
Fecha de Ingreso: julio-2009
Mensajes: 1
Antigüedad: 14 años, 8 meses
Puntos: 0
Comportamiento "extraño" de DOM

Buenos dias a todos!

Este es mi primer post en el foro, suelo casi siempre encontrar una solución a mis problemas en este foro, pero esta vez hay algo que se me escapa y no tengo idea de que puede ser. El código es el siguiente:

Código:
valores = document.getElementById(iden).getElementsByTagName('li');
var lista = String();

for(counter=0; valores.length >= counter; counter++)
{
  alert(valores[counter].firstChild.nextSibling.value);
}
Se trata de un formulario que posee una lista, dentro de cada <li> tengo un texto (el firstChild) y luego un <input> (el firstChild.nextSibling, porque podría ser un <select> también).
Recojo los valores introducidos por el usuario primero cogiendo un array con todos los <li> (con getElementsByTagName) dentro de mi div con su lista, luego voy a por cada uno de ellos con el for, indico que me interesa el "value" del segundo "child".
Quedaría asi: valores[counter].firstChild.nextSibling.value

Mi problema:

Lo que pasa es que si intento mostrar ese valor con un alert() me lo enseña sin problemas, pero si lo quiero sumar a una string de la siguiente forma:

Código:
valores = document.getElementById(iden).getElementsByTagName('li');
var lista = String();

for(counter=0; valores.length >= counter; counter++)
{
  lista+=valores[counter].firstChild.nextSibling.value;
}
no funciona, el JavaScript Debugger de Firefox, que de por si es bastante ambiguo en algunos casos, me dice lo siguiente:

Error 'valores[counter] is undefined'

Mientras que de la otra forma no se queja, me lo enseña sin problemas.

¿Alguien sabe decirme de que se trata?
  #2 (permalink)  
Antiguo 29/07/2009, 07:36
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: Comportamiento "extraño" de DOM

Hola.

Debes considerar que en algunos navegadores, uyn salto de línea o un espacio en blanco es un nodo de texto (especialmente navegadores mozilla)... Debes asegurarte que no sea el caso, tal vez con un bucle, consultando por ejemplo el nodeType o tagName...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 29/07/2009, 08:07
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Comportamiento "extraño" de DOM

Hola

El error está en esto valores.length >= counter;, le estás diciendo que continúe el ciclo mientras el número de elementos sea mayor o igual a counter

Prueba así

Código javascript:
Ver original
  1. var valores = document.getElementById(iden).getElementsByTagName('li');
  2. var lista = String();
  3.  
  4. for(var counter=0; counter < valores.length; counter++)
  5. {
  6.     lista+=valores[counter].firstChild.nextSibling.value;
  7. }

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
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 07:17.