要添加的事件處理程序對於一個元素,有三種方法;僅使用其中一個:
=>使用HTML屬性。我不會推薦這種方法,因爲它將JS與HTML混合在一起,並且從長遠來看並不實際。
<img id="firstImage" src="something.png" onclick="myListener(event);" />
=>使用JS中的元素屬性。這隻適用於你有單個事件綁定到該元素,所以我避免使用它。
var firstImage = document.getElementById('firstImage');
firstImage.onclick = myListener;
=>通過JavaScript進行綁定。這種方法已經標準化,並在IE9以後的所有瀏覽器中運行,所以沒有理由不再使用它。
var firstImage = document.getElementById('firstImage');
firstImage.addEventListener("click", myListener);
當然,myListener需要是一個函數,它會接收事件作爲它的第一個參數。
對於您的情況,您可能不想在點擊當前不是最後一個的圖像時添加另一個圖像。因此,當用戶點擊最後一張圖片時,您想添加一張新圖片並停止監聽當前圖片上的點擊。
var i = 1;
function addNextImage(e) {
// remove the listener from the current image
e.target.removeEventListener("click", addNextImage);
// create a new image and bind the listener to it
var img = document.createElement("img");
img.src = "http://placehold.it/" + (200 + i);
img.addEventListener("click", addNextImage);
document.body.appendChild(img);
// increment the counter variable
i = i + 1;
}
var firstImage = document.getElementById("firstImage");
firstImage.addEventListener("click", addNextImage);
Try on JSFiddle
在一個側面說明:在JavaScript並支持省略一些半支柱它被認爲是一個更好的做法是把他們,這將避免小錯誤。
您需要爲所有新添加的圖像分配點擊處理程序 – Ramanlfc
,你能告訴我該怎麼做Ramanlfc? – Sina