我正在尝试选择页面中的所有<a>
标记,并向其注册onclick
。
我的代码:
document.getElementsByTagName('a').onclick = show;
var show = function(){
alert('hahahha');
}
它不起作用,我的大脑现在油炸了。有任何想法吗?非常感谢。
答案 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));