我发现了一些似乎与此相关的问题,但在我的理解范围内,我的问题有所不同,所以就这样吧。我已经大大简化了我的代码,甚至用注释替换了一行,但概念是一样的......
function myFunction(options) {
var button;
options.widgets.forEach(function (w) {
button = document.createElement("button");
//add button to the DOM
aListOnMyPage.addEventListener("selectionchanged", function (args) {
var a = button;
});
});
}
因此,对于每个小部件,我将创建一个新对象,然后将事件侦听器添加到页面上的列表中,该列表的函数需要引用我创建的 DOM 元素(按钮)。我看到的行为是我的按钮在我创建事件侦听器的位置正确设置,但是当侦听器的事件触发时,按钮始终是对我创建的最后一个按钮的引用。也许是因为已经晚了,但我无法理解为什么会这样。任何人都可以为我澄清这一点吗?