세 가지 문제 :
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
여기에 고정 된 코드입니다 소유하지 않은 객체의 프로토 타입을 수정하는 것은 일반적으로 싫은 일이지만이 변경은 다소 무해하고 자연 스럽습니다.