2017-02-26 52 views
0

爲什麼addEventListener只與CANCEL標籤元素配合,而不是第一個,即使我刪除第二個?我在控制檯中沒有收到任何錯誤消息。爲什麼addEventListener不聽我說?

var ctrl = document.createElement('div'); 
 
ctrl.id = 'ctrl'; 
 

 
var showhide = document.createElement('label'); 
 
showhide.id = 'showhide'; 
 
showhide.innerHTML = 'Show/hide output'; 
 
showhide.setAttribute('onclick', 'return false;'); 
 
showhide.addEventListener("click", function() { 
 
    alert('Show/hide'); 
 
}); 
 

 
var cancel = document.createElement('label'); 
 
cancel.id = 'cancel'; 
 
cancel.innerHTML = 'CANCEL'; 
 
cancel.setAttribute('onclick', 'return false;'); 
 
//document.getElementById('showhide').insertAdjacentHTML('afterEnd', cancel.outerHTML); 
 
cancel.addEventListener("click", function() { 
 
    alert('cancel'); 
 
}); 
 

 
ctrl.appendChild(showhide) 
 
ctrl.innerHTML += ' | ' 
 
ctrl.appendChild(cancel) 
 
document.body.appendChild(ctrl)

+0

'ctrl.innerHTML + ='| ''不會追加,它會銷燬元素中的所有內容,並創建新的內容。事件監聽器被添加到原始元素,但不添加到新創建的元素。 – Teemu

+0

呵呵!這很簡單,謝謝。不是'+ ='追加? – fivethous

+0

不是,它只是'innerHTML = innerHTML +'的一個快捷方式。 「'。使用'insertAdjacentHTML'或創建並追加一個文本節點。 – Teemu

回答