javascript onclick在预期时不会触发

时间:2015-11-06 17:55:45

标签: javascript

我试图设置一个布尔值取决于是否选中了复选框,但我的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。

3 个答案:

答案 0 :(得分:3)

checkQA将被指定为onclick未定义。因此,在函数之后移动该赋值。或者不要使它成为变量函数,而是命名函数。

答案 1 :(得分:1)

查看: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);
    }
}

这对我有用! :)

答案 2 :(得分:0)

当您将onclick功能分配给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/