三個問題:
getElementsByTagName
必須呼籲文檔或元素
- 您不能直接通過
getElementsByTagName
返回的節點列表上添加一個事件偵聽器,必須遍歷它包含的元素:
- 你有一個錯字
addEventListener
這裏有一個固定的代碼:
var avoidlink = document.getElementsByTagName("a");
for (var i=0; i<avoidlink.length; i++) {
avoidlink[i].addEventListener("click",function(evt){
evt.preventDefault();
},false);
}
如果你希望能夠到一個事件偵聽器附加到一個節點列表,你可以豐富NodeList.prototype
:
NodeList.prototype.addEventListener = function(){
for (var i=0; i<this.length; i++) {
Element.prototype.addEventListener.apply(this[i] , arguments);
}
}
Demonstration
修改你不屬於自己的物體的原型通常是不被接受的,但這種改變是相當無害和自然的。