如何在生成的链接上放置一个javascript函数

时间:2015-03-29 18:12:50

标签: javascript html ajax

我正在尝试将生成的链接标记列表作为一个函数,这就是我这样做的方式。

for (i = 0; i < friendsXML.length; i++) {
                friendListInDiv = document.createElement("p");
                var link = document.createElement("a");
                link.onclick = function() {
                    openChat(friendsXML[i].textContent)
                };
                var friendText = document
                        .createTextNode(friendsXML[i].textContent + ":"
                                + statusXML[i].textContent);
                link.appendChild(friendText);
                friendListInDiv.appendChild(link);
                friendDiv.appendChild(friendListInDiv);
            }

目前openChat(name)函数仅调用警报来测试其值

function openChat(name){
alert(name);
}

现在的问题是,当我进入我的网页并单击其中一个生成的链接时,它始终会提醒第一个名称(每个链接都会提醒相同的名称,第一个名称)。所以我的问题是如何修复它,我会提醒每个链接的正确名称?

如果需要,这是完整代码的pastebin http://pastebin.com/8ggE7SHs

1 个答案:

答案 0 :(得分:1)

将其包装在函数闭包中:

for (i = 0; i < friendsXML.length; i++) {
(function(i) {
                friendListInDiv = document.createElement("p");
                var link = document.createElement("a");
                link.onclick = function() {
                    openChat(friendsXML[i].textContent)
                };
                var friendText = document
                        .createTextNode(friendsXML[i].textContent + ":"
                                + statusXML[i].textContent);
                link.appendChild(friendText);
                friendListInDiv.appendChild(link);
                friendDiv.appendChild(friendListInDiv);
            }(i))
}

你的变量被提升到外部范围,Javascript只有函数级别范围。