简体   繁体   English

如何在没有使用javascript的id的情况下向html标签添加onclick事件?

[英]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.

相关问题 我如何发送 ajax 请求通过使用 onclick 事件没有形式封闭标签在 django - how do i send ajax request by using onclick event without form enclosed tags in django 如何使用Javascript(而不是html)使用onclick事件声明事件对象? - How do I declare event object with onclick event using Javascript (not html)? 如何在javascript中将id添加到onclick事件中 - How to add id into onclick event in javascript 如何在没有onclick事件的情况下使用javascript更改图片? - How do I change an image with javascript without an onclick event? 如何在 javascript 中使用 html 中的元素进行 onclick 事件? - How do I use elements from html in javascript for an onclick event? 如何使用javascript / jquery在“ a”标签的onclick事件中编辑/添加到“ url”? - How can I edit/add to the 'url' inside an 'a' tag's onclick event using javascript/jquery? 如何在不使用 ID 标签的情况下将悬停文本添加到 Javascript 中的现有网页? - How can I add hover-over text to an existing web page in Javascript without using ID tags? 如何使用 JavaScript 将<a>标记的 onclick 事件处理程序更改为带参数的函数?</a> - How, using JavaScript, do I change an <a> tag's onclick event handler to a function with parameters? Javascript入门:如何将预加载器添加到HTML onClick? - Javascript Beginner: How do I add preloader to HTML onClick? 如何将唯一 ID 添加到 html 标签 - How to add unique Id's to html tags
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM