复选框值日志为“ ON”,而不是true或false

时间:2020-10-26 12:04:49

标签: javascript

我正在尝试编写自己的代码,但是当我console.log进入updateJSON()时,它使我“处于打开状态”

我不知道为什么这样说。我检查了event.target,这是一个复选框,但为什么控制台会“打开”

这是我的代码

        let task = {
            "list": {
                "clean the garden" : true,
                "clean the fence": true,
                "clean the room": false
            }
        }
        const div = document.getElementById("output");
        for(let key in task.list){
            //console.log(key);
            var status = !task.list[key] ? 'checked': 'unchecked'
            div.innerHTML += `
            <li>${key}
            <input type='checkbox' ${status}>
            </li>
            `
        }
        const checkboxes = document.querySelectorAll('#output input[type="checkbox"]');
        for(let i = 0; i < checkboxes.length;i++){
            checkboxes[i].onchange = updateJSON;
        }
        function updateJSON(){
            var key = event.target.value;
            console.log(key);
        }

不确定我是否理解。复选框的输入类型没有值,但已选中或未选中,这是对还是错,当我单击它时选中了它,它仍然会登录。如果是开和关之类的东西,为什么不注销

1 个答案:

答案 0 :(得分:2)

看看这个:

console.log(document.getElementById('chk1').value);
console.log(document.getElementById('chk2').value);
<input type="checkbox" id="chk1" />
<input type="checkbox" id="chk2" value="10" />

当您在此处使用event.target.value时,复选框没有默认值,因此您必须提供该值,否则它将为on