gpt4 book ai didi

javascript - 解析目标为 ="new"的链接并添加一个 onclick 事件

转载 作者:行者123 更新时间:2023-11-30 18:22:04 26 4
gpt4 key购买 nike

我有一个网站可以动态生成链接。我想看看我是否可以添加一个 onclick 事件处理程序来跟踪外部链接。我希望看到具有 target="new"的链接(这意味着我们网站的外部)并添加事件处理程序

html代码

 <a target="new" href="http://twitter.com/cnn">CNN</a>

我尝试测试的代码不工作。让我知道我的代码有什么问题,或者我应该将 onclick 事件附加到外部链接吗?

Js代码

var links = document.getElementsByTagName("a");
for (var i=0; <links.length; i++) {
if(links[i].target == 'new'){
links[i].onclick = function() {
alert("Added onClick: " + links[i].href);
}
}
}

最佳答案

这里的另一个答案是你应该做什么(使用这个),但值得解决 for 循环中的闭包问题。

如果您想在 for 循环中创建的闭包中使用一个变量,该变量在 for 循环中的每次迭代都会发生变化,请定义并调用一个匿名函数,该函数返回一个要绑定(bind)(绑定(bind)?)到 onclick 事件的函数.

var links = document.getElementsByTagName("a");
for (var i=0; i<links.length; i++) {
if(links[i].target == 'new'){
links[i].onclick =
function (obj) {
return function(event) {
alert("Added onClick: " + obj.href);
}
}(links[i]);
}
}

由于匿名函数的参数 (obj) 是按值传递的,因此在 for 循环的后续迭代中不会更改。返回的函数将拥有自己的对象副本。

当您将函数视为可以传递的对象时,Javascript 中的很多东西就开始变得有意义了。

关于javascript - 解析目标为 ="new"的链接并添加一个 onclick 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11804514/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com