2014-10-26 80 views
0

我試圖做一個簡單的事情之後,這是我的html:事件停止射擊父修改

<div id="div1"> 
    <a id="first" href="#">First</a> 
</div> 

,這是我的JS腳本

var div1 = document.getElementById("div1"); 
var first = document.getElementById("first"); 

first.addEventListener("click", function(e){ 
    alert("Hello"); 
    div1.innerHTML = div1.innerHTML + '<a id="second" href="#">Second</a>'; 
}, false); 

當我在#點擊第一個鏈接第二個錨點插入到#div1之後,如果我嘗試再次點擊#first鏈接沒有任何內容...

爲什麼這樣?

我創建了一個的jsfiddle:http://jsfiddle.net/jkL7bomw/

+0

當您直接操作HTML時,'first'的事件偵聽器不再存在。 – 2014-10-26 20:56:02

+0

添加元素,以便您不刪除現有的元素,並且必須重新綁定事件處理程序 – charlietfl 2014-10-26 20:58:43

回答

0

first的事件已經不存在了(原來#first被替換爲新的#first),當你直接操作HTML。改變DOM,而不是HTML的:

var a = document.createElement("a"); 
    a.href= "#"; 
    a.innerHTML = "Second"; 
    div1.appendChild(a); 

http://jsfiddle.net/jkL7bomw/1/

決不添加/更改元素與innerHTML除非你知道自己在做什麼。