如何选择所有<a> tag and register onclick event?</a>

时间:2012-07-06 04:37:22

标签: javascript

我正在尝试选择页面中的所有<a>标记,并向其注册onclick

我的代码:

document.getElementsByTagName('a').onclick = show;


var show = function(){
    alert('hahahha');
}

它不起作用,我的大脑现在油炸了。有任何想法吗?非常感谢。

6 个答案:

答案 0 :(得分:3)

您需要将onclick事件分别分配给所有<a> tags,如下所示:

var s=document.getElementsByTagName('a');
var show = function(){
   alert('hahahha');
}
for (var i=0;i<s.length;i++)  
{  
 s[i].onclick = show;      
} 

答案 1 :(得分:2)

您将onclick属性设置为元素数组,而不是根据需要单独设置每个元素。此外,您在使用它之后定义了show

var elts = document.getElementsByTagName('a');
var show = function() { alert('hahahha'); }
for (var i = elts.length - 1; i >= 0; --i) {
    elts[i].onclick = show;
}

通过数组向后迭代比每次测试elts.length更有效。如果需要向前迭代,请将数组长度存储在变量中以提高效率。

答案 2 :(得分:2)

document.getElementsByTagName('a')返回一个数组,试试这个:

    var arr = document.getElementsByTagName('a');
    for(var key in arr){
      arr[key].onclick = show;
    }

没有测试过,但应该可以正常使用

答案 3 :(得分:1)

为什么不使用Jquery,这将是javascript中最简单的解决方案。

您可以使用如下

$("a").on("click", function(event){
    alert('hahahha');
});

参考this文档。你可以使用Jquery 1.7。

答案 4 :(得分:1)

是的,我们可以使用java脚本和jquery来解决上述问题:

Javascript:

   var aLinks=document.getElementsByTagName('a'); // returns array of all <a> link objects

    //Function to be bind with link object
    var show = function(){
          alert("Now Show function has been binded...hahahhaha..!");
    }

    //Now we have to bind click event with each link object. 
    for(var i=0;i<aLink.length;i++){
       aLinks[i].onclick=show;
    }

将所有链接标记与任何事件绑定的另一种替代方法是使用jQuery,它为这种绑定问题提供了最简单的方法。

但首先,我们必须包含jquery.js javascript文件(最好使用最新版本)。

jQuery的:

$(function(){
    $("a").click(function(e){
             alert("Now Show function has been binded...hahahhaha..!");
      });
});

答案 5 :(得分:1)

借助新的JS标准,可以轻松完成此操作。我所有的a标签都有nav-link类。因此,我选择了所有节点(这给了我一个节点列表),并对它们全部进行了遍历,并添加了一个函数,只要选择了其中一个节点就可以调用。希望这会有所帮助!

let navLink = document.querySelectorAll('.nav-link');
const navbar = document.querySelector('#navbarNav');

closeNavBar = () => {
    navbar.classList.remove('show');
};

navLink.forEach((nav) => nav.addEventListener('click', closeNavBar));