select multiple
입력을 사용하고이 선택 항목의 옵션에 따라 확인란을 생성하는 함수를 만들었습니다. 그런 다음 각 체크 박스가 클릭 할 때 어떤 동작을 실행하기를 원합니다. 이 기능은 다음과 같습니다프로그래밍 방식으로 생성 된 addEventListener가 작동하지 않습니다.
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)
}
모든 작동 : 의도 한대로 체크 박스가 생성됩니다. 체크 상자를 클릭하면 아무 것도 나타나지 않습니다. 그것은 콘솔에서 "clicked"를 기록해야하지만 아무 일도 일어나지 않습니다. 이상하게도 브라우저 디버그 콘솔을 통해 동일한 EventListener를 추가하면 작동합니다.
여기 무슨 일입니까?
편집 :repl.it 예.
감사합니다! 답안의 링크에서 알 수 있듯이'label.appendChild (document.createTextNode ([...]))'에'label.innerHTML + = [...]'을 변경하여 해결했습니다. –