[英]How do I add an onclick event to html tags without id's using javascript?
I tried doing this but it didn't seem to work: 我试过这样做,但似乎没有用:
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;
}
}
}
I know I can getElementById and that works, but it doesnt work this way. 我知道我可以getElementById并且这样可行,但它不会这样工作。 Any help would be appreciated. 任何帮助,将不胜感激。
Thanks! 谢谢!
document.getElementsByTagName('a') returns a NodeList of DOM Elements. document.getElementsByTagName('a')返回DOM元素的NodeList。 So for starters, you will have to iterate over them and attach a handler to each like this : 所以对于初学者来说,你将不得不迭代它们并将处理程序附加到每个像这样:
var links = document.getElementsByTagName('a');
for( var i=0,il = links.length; i< il; i ++ ){
links[i].onclick = clickHandler;
}
If there are many elements, I suggest you read about event delegation and assign just one handler for everything. 如果有很多元素,我建议您阅读有关事件委托的内容,并为所有内容分配一个处理程序。
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;
}
You need to iterate over all of the elements returned by document.getElementsByTagName
您需要遍历document.getElementsByTagName
返回的所有元素
var links = document.getElementsByTagName('a');
var i = links.length;
while ( i-- ) {
links[i].onclick = clickHandler;
}
// ... rest of your code ...
That's because getElementsByTagName
returns a NodeList
. 那是因为getElementsByTagName
返回一个NodeList
。 You cannot assign an event handler via the onclick
property on a NodeList
, only a single DOMElement
. 您不能通过NodeList
上的onclick
属性分配事件处理程序,只能分配一个DOMElement
。
Try: 尝试:
var elems = document.getElementsByTagName('a');
for (var i = 0; i < elems.length; i++) {
elems[i].onclick = clickHandler;
}
I'd strongly suggest using JQuery. 我强烈建议使用JQuery。 Something like this should do the trick: 像这样的东西应该做的伎俩:
$(function(){$('a').click(clickHandler);});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.