【发布时间】:2018-05-27 17:19:42
【问题描述】:
我创建了一个函数,它接受select multiple 输入并根据此选择的选项生成复选框。然后,我希望每个复选框在单击时执行一些操作。功能是:
const makeCheckboxDropdown = (input) => {
if (input.type !== "select-multiple") {
console.error("The input must be an `select multiple` type!")
return
}
input.options[0].selected = false
const header = document.getElementById('header')
const outer = document.createElement('div')
const options = input.options
for (i = 0; i < options.length; i++) {
let div = document.createElement('div')
div.classList.add('checkbox')
let label = document.createElement('label')
let cb = document.createElement('input')
cb.type = "checkbox"
cb.value = options[i].value
cb.addEventListener("change", (e) => console.log("clicked"))
label.appendChild(cb)
label.innerHTML += options[i].value
div.appendChild(label)
outer.appendChild(div)
}
header.parentNode.insertBefore(outer, header.nextSibiling)
}
一切正常:复选框按预期生成。除此之外,当我单击复选框时,什么也没有发生。它应该在控制台上记录“点击”,但没有任何反应。奇怪的是,如果我通过浏览器调试控制台添加相同的 EventListener,它就可以工作。
这里发生了什么?
编辑:repl.it 示例。
【问题讨论】:
标签: javascript events checkbox addeventlistener