这是我的第一个问题,可能确实很愚蠢:)
我在一个数组中选择了一些值,从 GM_listValues() 返回。
当我遍历集合时,我想动态创建按钮来调用一个函数来删除存储的值,然后重新加载页面。
deleteB.addEventListener("click", function() {deleteTrip(names[i]);pageSelect();}, false);
上面是我用来将事件附加到按钮的行 (deleteB
)。但是,当我按下按钮时,javascript 尝试使用计数变量 (i
) 访问 listValues (names
) 的数组。自然地,这将不存在,因为循环现在已经完成,而且 names
无论如何都不是全局的。
我想知道的是,当我在按钮中创建函数时,是否有办法复制 names[i]
的字符串值,这样就不需要引用 names[i]
在代码中。
我知道这可能是一个非常简单的答案,但它让我感到难过,这是我第一次使用 javascript 进行的工作。
提前致谢。
最佳答案
使用闭包来记住值;
function createDeleteFunc(name) {
return function(){deleteTrip(name);pageSelect();}
}
for() {
...
deleteB.addEventListener("click", createDeleteFunc(names[i]), false);
...
}
关于javascript - 将值从 Greasemonkey 沙箱传递到匿名函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5679568/