javascript onclick未按预期触发

javascript onclick not firing when expected

本文关键字:onclick javascript      更新时间:2023-09-26

我试图根据是否选中复选框来设置布尔值,但我的checkQA单击函数似乎没有启动。

console.log(checkbox)返回input#enableQA,所以我知道它击中了正确的元素。

这是一个JSFiddle。

var isChecked = false,
    checkbox = document.getElementById('enableQA');
checkbox.onclick = checkQA;
var checkQA = function () {
    if (checkbox.checked) {
        isChecked = true;
        checkbox.checked = true;
        alert(isChecked);
    } else {
        isChecked = false;
        checkbox.checked = false;
        alert(isChecked);
    }
}
<form method="post" name="qaform">
    <input id="enableQA" name="enableQA" type="checkbox" value="" />
    Enable QA
</form>

我只对纯Javascript解决方案感兴趣,请不要推荐jQuery。

checkQA将由其分配给onclick来定义。因此,将该赋值移到函数后面。或者不要使它成为一个变量函数,而是一个命名函数。

通过查看:http://www.w3schools.com/jsref/event_onclick.asp:

    var isChecked = false,
    checkbox = document.getElementById('enableQA');
console.log(checkbox);
checkbox.onclick  = function () {
    if (checkbox.checked) {
        isChecked = true;
        checkbox.checked = true;
        alert(isChecked);
    } else {
        isChecked = false;
        checkbox.checked = false;
        alert(isChecked);
    }
}

它对我有用!:)

您的onclick函数在分配给onclick时还不存在。像这样切换订单:

    var isChecked = false,
    checkbox = document.getElementById('enableQA');
var checkQA = function () {
    if (checkbox.checked) {
        isChecked = true;
        checkbox.checked = true;
        alert(isChecked);
    } else {
        isChecked = false;
        checkbox.checked = false;
        alert(isChecked);
    }
}
checkbox.onclick = checkQA; 

http://jsfiddle.net/coaofpzL/3/