编辑:我能找到的解决js中循环闭包的最佳解释是Javascript infamous Loop issue?
所以我的代码可以用作:
a.onclick = function (url) {
return function () {
OnSearchResultClick(url);
}
}(urlStr);
POST: 我试图通过迭代从ajax请求收到的json数组在js中动态构建一个列表。
方案1:
for (var i = 1; i < results.length; i++) {
//alert(results[i]['url']);
var nameStr = results[i]['name'];
var urlStr = results[i]['url'];
var a = document.createElement("a");
a.textContent = nameStr;
a.id = nameStr;
a.href = "#";
a.onclick = function () {OnSearchResultClick(urlStr);};
在firebug中我看到onclick事件将完全调用:OnSearchResultClick(urlStr),因此将获取urlStr的最后一个设置值,这意味着以这种方式创建的所有标签都使用相同的参数调用该函数。
方案2:
a.onclick = function () {OnSearchResultClick(results[i]['url']);}
更奇怪的是,在firebug中我得到TypeError:results [i]未定义
方案3: 试图传递urlStr.value,它是未定义的
所以我想知道如何在urlStr变量
中发送变量而不是字符串值我一直在检查javascript通过值或引用传递参数的文档,但似乎无法使其工作
任何帮助将不胜感激
感谢