javascript - 在函数中使用循环值的问题

标签 javascript function variables onclick

此处为初学者 Javascript 问题。

我正在尝试创建一个函数来查找给定 div 中的所有链接并为每个链接设置一个 onclick 事件。我可以正确获取链接 href,但是当我尝试在 onclick 函数中使用它们时,Javascript 似乎只使用找到的最后一个值:

即 我有这些链接

#目的

# future

#常见问题

当我使用 onclick 函数时,每个链接都被报告为 #faq 链接。

代码如下:

function prepareLinks () {
var nav = document.getElementById('navigation');
var links = nav.getElementsByTagName ('a');
for (var i = 0; i<links.length; i++) {  
    var linkRef = links[i].getAttribute('href').split("#")[1];
    links[i].onclick = function () {
        var popUp = "You clicked the " +linkRef +" link";
        alert (popUp);
    }
}

最佳答案

这里有一个 closure创建。外部变量 linkRef 保存在内部 onclick 函数中。试试这个方法:

clickFunction() {
    var popUp = "You clicked the " + this.href.split("#")[1] +" link";
    // this should mean current clicked element
    alert (popUp);
}

for (var i = 0; i<links.length; i++) {  
    links[i].onclick = clickFunction;
}

关于javascript - 在函数中使用循环值的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2108859/

相关文章:

javascript - 是否需要使用 "typeof"运算符来检查全局变量是否存在?

Java 类的不同实例

php - call_user_func_array() args 以字符串作为键来匹配函数参数名称

python - 更快地调用函数求值

javascript - 函数.prototype.bind

javascript - 向下滚动时替换div中的图像

javascript - 在 javascript(或 jQuery)中使用变量触发同名函数

javascript - 传递参数的终端错误

javascript - Reactjs 渲染两次

javascript - 提交没有明文密码的 Javascript 表单