Foros del Web » Programando para Internet » Javascript »

DOM i javascript

Estas en el tema de DOM i javascript en el foro de Javascript en Foros del Web. Hola a todos, tengo aqui una pequeña consulta para realizar-les a ver si me la pueden aclarar. Resulta que a través de una consulat ajax ...
  #1 (permalink)  
Antiguo 14/03/2008, 05:25
 
Fecha de Ingreso: enero-2008
Mensajes: 28
Antigüedad: 16 años, 3 meses
Puntos: 0
DOM i javascript

Hola a todos, tengo aqui una pequeña consulta para realizar-les a ver si me la pueden aclarar. Resulta que a través de una consulat ajax paso mediante xml a un javascript una serie de datos, una vez en el javascript voy creando los elementos mediante el DOM, mi problema viene al crear un elemento de tip "a" i asignarle una funcion (onclick) con un parametro. El problema reside en que siempre se le pasa el mismo parametro, cuando para elemento que creo deberia ser un parametro distinto.
Pongo un ejemplo del codigo

Cita:
var taula=document.createElement("table");
var tbody=document.createElement("tbody");

for(i=0;i<root.childNodes.length;i++){//saco el elemnto raiz del xml para ir procesando los nodos

var jugadors=root.getElementsByTagName("jugador")[i]; var nick =jugadors.firstChild;
var punts=jugadors.lastChild;
var f1=document.createElement("tr");
var c1=document.createElement("td");
var t1=document.createTextNode(nick.firstChild.nodeVal ue);
var txt=t1.nodeValue;
var d=document.createElement("a");
d.appendChild(t1);
d.onclick=function (){mostrarjugador(t1.nodeValue)}<--aquí tengo el problema puesto que en cada interación del bucle deberia haber un t1.nodeValue distinto por lo tanto se deberia asignar ese parametro a la función, pero se asigna, para todos, el ultimo valor que toma t1.nodeValue!!

c1.appendChild(d);
var c2=document.createElement("td");
var t2=document.createTextNode(punts.firstChild.nodeVa lue);
c2.appendChild(t2);
f1.appendChild(c1);
f1.appendChild(c2);
tbody.appendChild(f1);
taula.appendChild(tbody);

}

Otra curiosidad que tengo, es que al ver el codigo fuente de mi pagina los elementos creados mediante DOM no aparecen, esto a que se debe??

GRACIAS A TODOS POR SU ATENCIÓN I AYUDA.
  #2 (permalink)  
Antiguo 14/03/2008, 06:04
Avatar de aloqui  
Fecha de Ingreso: diciembre-2007
Mensajes: 973
Antigüedad: 16 años, 5 meses
Puntos: 24
Re: DOM i javascript

Creo que te sale siempre el mismo valor porque estás usando:
var t1=document.createTextNode(nick.firstChild.nodeVal ue);
y "nick" siempre es el mismo: nick =jugadors.firstChild;

En cuanto a la segunda pregunta, los elementos creados dinámicamente no aparecen en el fuente porque simplemente no ESTAN en el fuente, sino que son CREADOS por él.
Sin embargo puedes verlos gráficamente (y navegar por el DOM) con el navegador Firefox, en el menú: "Tools/Dom Inspector"
__________________
Grupos de Música
Pop Music Stars
  #3 (permalink)  
Antiguo 14/03/2008, 08:41
 
Fecha de Ingreso: enero-2008
Mensajes: 28
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: DOM i javascript

Hola aloqui i gracias por responder tan ràpido, creo que no es por eso puesto que en cada iteración jugadors contiene un hijo diferente
Cita:
var jugadors=root.getElementsByTagName("jugador")[i]; var nick =jugadors.firstChild;
O así lo entiendo yo, puesto que no se me ocurre nada más. Muchas gracias de todos modos.
  #4 (permalink)  
Antiguo 16/03/2008, 17:31
 
Fecha de Ingreso: enero-2008
Mensajes: 28
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: DOM i javascript

Nadies saber porque puede ser esto, me esta volviendo loco!! Otro ejemplo que he probado i no funciona es por ejemplo cuando tienes un bucle i a la funcion que quieres agreagarle al evento onclick les pases el indice del bucle. El parametro que recibe la funcion siempre es el ultimo indice del bucle, como si no se asignara de manera dinàmica sinò al final!!!
  #5 (permalink)  
Antiguo 17/03/2008, 08:02
 
Fecha de Ingreso: enero-2008
Mensajes: 28
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: DOM i javascript

Bueno amigos i amigas ya he conseguido resolver este problema. Mi error, sino me equivoco, era pensar que al asignar al onclick de este modo .onclick=function (){mostrarjugador(t1.nodeValue)} se le pasaba a la funcion el parametro correspondiente, pero hoy lunes i con mas tiempo i detenimento he estado comprobando el comportamiento i observo que cuando se pulsa click es cuando se evalua esa función por lo tanto simpre se asingara el valor del ultimo nodo t1. El problema era tan simple de resolver como asignar a la función el parametro this, así cuando se haga click se pasarà el objeto sobre el que se ha hecho click.

En fin que mi problema estaba en pensar que los parametros de las funciones se asignaban de una manera, digamos, estàtica mientra que realmente se asignan al hacer el click sobre el elemento correspondiente (de manera dinàmica como si dijeramos, aunque los terminos aqui no son demasiado adecuados), por lo tanto para que funcione bien se le debe pasar como parametro el elemento que ha generado el evento.

Muchas gracias a todos i no se si se entiende muy bien la respuesta, si alguien no lo entiende que lo diga i intento explicarlo de forma mas clara. Gracias de nuevo por su atención.

marcarlo como resuelto si quereis!!
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 19:35.