本文旨在解决JavaScript动态创建select元素后,option点击事件无法触发的问题。我们将通过分析问题代码,找出失效原因,并提供有效的解决方案,帮助开发者正确地为select元素添加change事件监听器,实现预期的交互效果。
在JavaScript中,动态创建
提供的代码尝试通过循环遍历所有
opts = document.getElementsByTagName("option")
for (i = 0; i < opts.length; i++) {
console.log(opts[i])
opts[i].onclick = function () {
alert("Why do not get alert??")
}
}这段代码的问题在于,
正确的做法是监听
以下是修改后的代码:
var x = document.createElement("SELECT");
x.setAttribute("id", "mySelect");
document.body.appendChild(x);
for (i = 0; i < autos.length; i++) {
var z = document.createElement("option");
z.setAttribute("value", autos[i].model);
var t = document.createTextNode(autos[i].model);
z.appendChild(t);
document.getElementById("mySelect").appendChild(z);
}
x.addEventListener("change", function(event) {
alert("Selected value: " + event.target.value);
});代码解释:
Select Change Event
当需要在JavaScript中动态创建