javascript - 将值从 Greasemonkey 沙箱传递到匿名函数

标签 javascript greasemonkey addeventlistener userscripts


这是我的第一个问题,可能确实很愚蠢:)

我在一个数组中选择了一些值,从 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/

相关文章:

javascript - CasperJS:将抓取的数据导出到结构化的 Excel 或 CSV

javascript - GM跨域Ajax不工作

javascript - 检查按钮是否按一定顺序被点击 JS

javascript - 关于上下文管理器的任何提示,类似于 Javascript 中的 Python?

javascript - Reactjs 在单击按钮时多次触发 AJAX 调用(每次单击只需要 1 次!)

javascript - 通过 Greasemonkey 实现 Google Custom Search API

javascript - 为什么这个greasemonkey/javascript 代码在冒号上运行?

javascript - addEventListener 是否在 while 循环中工作?

jquery - AJAX 加载的内容是否得到 "document.ready"?

javascript - C# Cefsharp 无法 getElementsByClassName