これに関連していると思われるいくつかの質問を見つけましたが、私の理解の範囲では、私のものは異なるので、ここに行きます. コードを大幅に簡素化し、1行をコメントに置き換えましたが、概念は同じです...
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 要素 (ボタン) を関数が参照する必要があるページのリストにイベント リスナーを追加します。私が見ている動作は、イベントリスナーを作成した時点でボタンが正しく設定されていることですが、リスナーのイベントが発生すると、ボタンは常に最後に作成したボタンへの参照になります。遅いからかもしれませんが、なぜこのように振る舞うのか頭を悩ませることはできません。誰かが私のためにこれを明確にすることができますか?