Обычно, если я нажимаю на флажок, я хочу, чтобы имя флажка отображалось на консоли.
Вот соответствующая функция JavaScript и HTML.
JavaScript:
var list = [];
function test(){
var checkBoxes = document.querySelectorAll('input[type=checkbox]')
for(var i = 0; i < checkBoxes.length; i++) {
checkBoxes[i].addEventListener('change',function(){
if(this.checked){
console.log(this.value)
}
});
}
}
HTML:
<label><input type = "checkbox" onclick= "test()" name ="one" value ="one">test<br></label>
<label><input type = "checkbox" onclick= "test()" name ="two" value ="two" > test 1<br></label>
<label><input type = "checkbox" onclick= "test()" name ="three" value ="three" >test 2<br></label>
<label><input type = "checkbox" onclick= "test()" name ="four" value ="four" >test 3<br></label>
<label><input type = "checkbox" onclick= "test()" name ="five" value ="five" >test 4<br></label>
<label><input type = "checkbox" onclick= "test()" name ="six" value ="six" >Test 5<br></label>
Если я нажму на флажок, он должен показывать в консоли имя отмеченного флажка.
Однако происходит нечто действительно странное, и я не понимаю, почему это так. Я имею смутное представление о том, почему это происходит, но не совсем ясно.
Когда я нажимаю на первый флажок, например. Я нажимаю на флажок с именем «один».
На консоли отображается:
один (при необходимости)
Но если я нажму на следующий флажок (например, я нажал на флажок с именем «четыре»).
В консоли отображается:
четыре
четыре
И щелкнул следующий флажок (если он называется «пять»)
Консоль показывает:
пять
пять
пять
и т. Д .... (постепенно повторяя имя флажка, отображаемое на консоли каждый раз, когда я нажимаю на другой флажок)
Почему это повторяется? Когда я нажимаю на флажок, технически должно быть одно событие onclick. Почему он считает все остальные и повторяет бит console.log (this.value)?
Заранее спасибо всем, кто может дать некоторое представление о том, почему это происходит.