три проблемы:
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
Модификация прототипа объектов, которые вы не являетесь владельцами, обычно неодобрительно, но это изменение довольно безобидное и естественное.