이 문제와 관련된 것으로 보이는 몇 가지 질문을 발견했지만 내 이해의 범위 내에서 광산이 다르므로 여기에 있습니다. 내가 크게 내 코드를 단순화, 심지어 주석과 한 줄을 교체하지만, 개념은 동일이 ... 위젯 나는 새로운 객체를 생성하고 이벤트를 추가하고 각각에 대한 그래서 내부 JavaScript 함수에 외부 객체 포함
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;
});
});
}
Listener를 내가 작성한 DOM 요소 (버튼)를 참조해야하는 페이지의 목록에 추가합니다. 내가 보는 동작은 이벤트 수신기를 만들 때 버튼이 올바르게 설정되지만, 수신기의 이벤트가 발생하면 버튼은 항상 내가 마지막으로 만든 버튼에 대한 참조입니다. 아마도 늦은 것 같아요.하지만 이런 식으로 행동 할 이유가 내 머리를 감쌀 수는 없어요. 아무도 나를 위해 이것을 명확히 할 수 있습니까?
"javascript loop last value"또는 유사 항목을 검색하십시오. –
예 : http://stackoverflow.com/questions/6425062/passing-functions-to-settimeout-in-a-loop-always-the-last-value, http://stackoverflow.com/questions/6599157/why-always- 루프에 사용 된 객체에 대한 마지막 참조 (last-reference-the-object-is-in-loop) 등은 약간 다른 모습의 동일한 문제입니다. –