2015-11-06 71 views
0

我想設置一個布爾值取決於如果複選框被選中或不,但我checkQA點擊功能似乎並沒有射擊。JavaScript的onclick沒有射擊時,預期

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

checkQA將被分配到onclick未定義。因此,在函數後面稍後移動該分配。或者不要讓它成爲一個可變函數,而是一個命名函數。

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); 
    } 
} 

它的工作對我來說! :)

0

您的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/