Foros del Web » Programando para Internet » Javascript »

por que truena si no tiene valor?

Estas en el tema de por que truena si no tiene valor? en el foro de Javascript en Foros del Web. Que tal amigos, estoy trabajando con AJAX y recivo un objeto XML del cual manejo sus valores con DOM, pero tengo problemas cuando uno de ...
  #1 (permalink)  
Antiguo 05/06/2007, 07:46
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 19 años, 3 meses
Puntos: 3
Pregunta por que truena si no tiene valor?

Que tal amigos, estoy trabajando con AJAX y recivo un objeto XML del cual manejo sus valores con DOM, pero tengo problemas cuando uno de los nodos del XML no tienen valor ( ejem.

Código HTML:
<valor1>Si</valor1>
<valor2>No</valor2>
<valor3></valor3> 
), puedo extraer sin problemas los nodos con valor usando :

Código HTML:
vari.getElementsByTagName("valor...")[0].firstChild.data;
pero cuando quiero sacar el contenido de valor3 este me truena y ya no me permite seguir ejecutando el JS alguien sabe por que y sobre todo, como puedo resolverlo? de antemano muchas gracias!
__________________
Wow! No se que decir...
  #2 (permalink)  
Antiguo 06/06/2007, 16:50
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 21 años, 2 meses
Puntos: 45
Re: por que truena si no tiene valor?

Eso me supongo que será... porque
vari.getElementsByTagName("valor3")[0]
no tiene hijos, de manera que si haces un firstChild, no existe, y no tiene propiedades. Intentas hallar la propiedad data, y te da error.

Deberías comprobar si existen hijos de valor3 para intentar extraerlo.

Un saludo zyon.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #3 (permalink)  
Antiguo 07/06/2007, 10:33
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 19 años, 3 meses
Puntos: 3
Pregunta Re: por que truena si no tiene valor?

De hecho se que no tiene ningun valor, solo se pintan las etiquetas pero no le pongo ningún valor ya que en el query arroja que ese campo esta vacio, entonces por eso me genera error? al no encontrar un hijo que seria el dato que quiero extraer?

Código HTML:
vari.getElementsByTagName("valor...")[0].firstChild.data;
entonces en esa linea de codigo (la de arriba), me pocisiono en el nodo valor3, y entro al valor del primer hijo, asi se lee?
__________________
Wow! No se que decir...
  #4 (permalink)  
Antiguo 07/06/2007, 16:35
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 21 años, 2 meses
Puntos: 45
Re: por que truena si no tiene valor?

Resulta que "valor3" no tiene hijos. Cuando haces
Código:
vari.getElementsByTagName("valor1")[0].firstChild.data;
te devuelve la cadena "Si" porque "valor1" tiene un hijo, un nodo de texto. Entonces los nodos de texto tienen la propiedad data, que es el texto que contienen.

Al no haber nodo hijo (ni siquiera de texto al no contener ni un espacio), no contiene propiedad data (ni siquiera sé que ocurre si sólo haces firstChild, dará undefined?).

Bueno el caso es que hay métodos DOM como hasChildNodes() o childNodes.length para averiguar si hay o no hijos. Deberás mirarlo antes. Lo que quieras devolver en ese caso ya es cosa tuya (false, cadena vacía, null...).


Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #5 (permalink)  
Antiguo 10/06/2007, 16:03
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 19 años, 3 meses
Puntos: 3
Re: por que truena si no tiene valor?

a entiendo, si quiero usar el .data me seria conveniente antes verificar que contenga un valor...por ejemplo tambien e usado dos modos de extraer los datos de un nodo tipo Texto, el data y el nodeValue que diferencia hay entre esos dos¿?
__________________
Wow! No se que decir...
  #6 (permalink)  
Antiguo 10/06/2007, 16:37
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 21 años, 2 meses
Puntos: 45
Re: por que truena si no tiene valor?

Pues la verdad, nunca me lo había planteado, pero he encontrado ésto buscando:
http://www.ventanazul.com/forum/showthread.php?t=1062
Y si w3c no menciona data para nada... pues habrá que utilizar nodeValue.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #7 (permalink)  
Antiguo 11/06/2007, 08:44
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 19 años, 3 meses
Puntos: 3
Re: por que truena si no tiene valor?

a exacto, lo de data yo tampoco e encontrado informacion y por eso es que preguntaba la diferencia entre ese y nodeValue y checare la liga...
__________________
Wow! No se que decir...
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 01:26.