자바 스크립트 버튼 또는 addEventListener
window.onload = function() {
for(i = 1; i < 21; i++) {
var button = document.createElement("button");
var text = document.createTextNode(i);
button.appendChild(text);
button.addEventListener("click", function() {
alert(text.nodeValue);
});
var body = document.getElementsByTagName("body")[0];
body.appendChild(button);
}
}
..., (20)이 버튼을 클릭하면 경고한다 그 색인. 예를 들어, 첫 번째 버튼 (가장 왼쪽)을 클릭하면 1을 경고해야합니다. 순수한 javaScript로이를 수행하고 html을 작성하지 않고 javaScript 만 수행하려고합니다. 내가 작성한 코드의 경우, 버튼 안의 텍스트가 정확하더라도 20 개의 버튼 모두에 대해 20 개의 경고를 표시합니다. This is what it alerted when I clicked button with index 1 내 질문에 올바른 색인 대신 20 개의 버튼 모두에 20 개의 경고를 표시하는 이유는 무엇입니까? 올바른 색인을 표시하려면 어떻게해야합니까?
업데이트 :
window.onload = function() {
for(i = 1; i < 21; i++) {
var button = document.createElement("button");
var text = document.createTextNode(i);
button.appendChild(text);
button.addEventListener("click", function() {
alert(button.innerText);
});
var body = document.getElementsByTagName("body")[0];
body.appendChild(button);
}
}
이 중 하나가 작동하지 않습니다, 동일한 문제.
아, 이전 closure-in-a-loop 문제. 빠른 수정 :'for '의 내용을'(function (i) {.....}) (i)'로 둘러 쌉니다. – Amadan