我试过这样做,但似乎没有用:
window.onload = initAll;
function initAll(){
document.getElementsByTagName('a').onclick = clickHandler;
}
function clickHandler(){
if(this.toString().indexOf("localhost") < 0) {
confirmation = confirm("You are now leaving http://soso.com. Please click 'ok' to continue to this site, or 'cancel' to stay in http://soso.com");
if (confirmation == false){
return false;
}
}
}
我知道我可以getElementById并且这样可行,但它不会这样工作。任何帮助将不胜感激。
谢谢!
答案 0 :(得分:7)
document.getElementsByTagName('a')返回DOM Elements的NodeList。所以对于初学者来说,你将不得不迭代它们并为每个人附加一个处理程序:
var links = document.getElementsByTagName('a');
for( var i=0,il = links.length; i< il; i ++ ){
links[i].onclick = clickHandler;
}
如果有很多元素,我建议您阅读event delegation并为所有内容分配一个处理程序。
答案 1 :(得分:3)
function initAll()
{
var elements = document.getElementsByTagName('a'); // returns an array
// add the handler to each element
var n;
for (n = 0; n < elements.length; ++n)
elements[n].onclick = clickHandler;
}
答案 2 :(得分:1)
您需要迭代document.getElementsByTagName
var links = document.getElementsByTagName('a');
var i = links.length;
while ( i-- ) {
links[i].onclick = clickHandler;
}
// ... rest of your code ...
答案 3 :(得分:1)
那是因为getElementsByTagName
返回NodeList
。您无法通过onclick
上的NodeList
媒体资源分配事件处理程序,只能指定一个DOMElement
。
尝试:
var elems = document.getElementsByTagName('a');
for (var i = 0; i < elems.length; i++) {
elems[i].onclick = clickHandler;
}
答案 4 :(得分:0)
我强烈建议使用JQuery。这样的事情可以解决问题:
$(function(){$('a').click(clickHandler);});