Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

alex_tp

[Resolvido] Javascript e seus mistérios...

Recommended Posts

Tive problemas com eventos no javascript e demorei saber o que era, mas decobri, vejam o exemplo:

 

 

java script:

var teste = function(){	var dv = document.createElement("div");	dv.style.border = "1px solid red";	dv.style.width = "100px";	dv.style.height = "100px";	dv.onclick = function(){		alert("teste");	}	var container = document.getElementById("container");	container.appendChild(dv);}window.onload = function(){	teste();	document.getElementById("container").innerHTML += "...";}

 

 

HTML

<html>  <head>	 <body>		   <div id="container"></div>	 </body>  </head></html>

 

Não sei se com vocês não haverá problema mas comigo o evento "onclick" adicionado a DIV criada na função "teste()" não funciona.

 

O motivo: A instrução [ document.getElementById("container").innerHTML += "..." ] contida no window.onload.

 

Qualquer alteração de conteúdo que a DIV#container sofrer sem ser via DOM os eventos contidos nos elementos (criados dinamicamente) dentro dela são perdidos. Não sei porque isso ocorre.

 

Se no lugar de [ document.getElementById("container").innerHTML += "..." ] fizer document.getElementById("container").appendChild(document.createTextNode("...")) o problema não ocorre.

 

Se alguém puder explicar fico grato!

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

alex_tp, boa tarde!

 

O motivo é porque ao usar :

 

document.getElementById("container").innerHTML += "...";

Você esta na verdade, rescrevendo os nós (objetos) do container.

 

Resumindo:

seria como e você desse um removeChild em todos os nós filhos do container, depois um insertChild com nos inteiramente novos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.