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

Yso*_*oL8 1 javascript variables function onclick

初学者Javascript在这里提问.

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

IE我有这些链接

#目的

#未来

#常问问题

当我使用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);
    }
}
Run Code Online (Sandbox Code Playgroud)

}

kir*_*oid 6

这里有一个闭包创建.外部变量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;
}
Run Code Online (Sandbox Code Playgroud)