如何将javascript函数放在生成的链接上

How to put a javascript function on a generated link

本文关键字:链接 javascript 函数      更新时间:2023-09-26

我试图给一个生成的链接标签列表一个函数,这就是我的方法。

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);
}

现在的问题是,当我转到我的网页并点击其中一个生成的链接时,它总是提醒第一个名字(每个链接都提醒相同的名字,第一个)。所以我的问题是,我该如何修复我为每个链接提醒正确名称的问题?

如果需要,这里有一个完整代码的粘贴框http://pastebin.com/8ggE7SHs

将其封装在函数闭包中:

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只有函数级作用域。