我有一个代码,其中3个按钮元素是动态创建的,当它们被创建时,我想提醒每个按钮textContent
,但是当我这样做时,只有最后一个元素被警告,而其他元素则没有。那是为什么?
var list = new Array("en", "to", "tre");
for (i=0; i<list.length; i++) {
button = document.createElement("button");
button.textContent = list[i];
document.body.appendChild(button)
}
button.addEventListener("click", function () {
alert(this.textContent);
});
答案 0 :(得分:1)
您只是将事件监听器添加到最后一个按钮。
将它移到循环中,如下所示:
var list = new Array("en", "to", "tre");
for (var i = 0; i < list.length; i++) {
button = document.createElement("button");
button.textContent = list[i];
document.body.appendChild(button)
button.addEventListener("click", function() {
alert(this.textContent);
});
}
&#13;
答案 1 :(得分:1)
对于i
的每个值,button
是不同的。在循环结束时,button
仍然只是最后一个元素。你应该将事件监听器放在循环中,如下所示:
var list = new Array("en", "to", "tre");
for (i=0; i<list.length; i++) {
button = document.createElement("button");
button.textContent = list[i];
document.body.appendChild(button);
button.addEventListener("click", function () {
alert(this.textContent);
});
}
另外,强烈建议不要使用new Array( a, b, c )
,请考虑切换到[ a, b, c ]
。它并没有破坏你的代码,但绝对值得注意