我正在尝试将html复选框的checked
值初始化为false。但是,当我尝试设置它然后立即记录它的值时,它仍然显示为true,并且复选框仍然被检查。
什么可能导致checked
属性忽略通过JavaScript显式设置其值?
console.log( "setting", self.checkbox.testid, "to", self.checked );
self.checkbox.checked = self.checked;
console.log( self.checkbox.testid + " checked: ", self.checkbox.checked ); // still true
答案 0 :(得分:1)
尝试其他方法:
如果你碰巧使用jQuery:
$('#myCheckbox').removeAttr('checked');
如果没有,请尝试在复选框上设置ID,并确保您正在处理正确的元素:
document.getElementById('myCheckbox').checked = false;
答案 1 :(得分:1)
啊哈!问题实际上不在复选框的checked
属性中,而是值我试图将其设置为。
如果我明确地将self.checked
更改为false
,它现在可以使用了。所以问题是为什么它被记录为“假”但是“假”值实际上不是false
!
...
是的确,当我记录typeof self.checked
时,它实际上是一个字符串,其值为“false”!当然,字符串“false”实际上是真实的。多么具有欺骗性!
现在问题是为什么heck是self.checked一个字符串,但这是我自己要解决的问题。感谢您帮助我通过人们思考。
答案 2 :(得分:0)
要以编程方式跨浏览器更改复选框值,您需要执行以下操作:
checkbox.checked = checkbox.defaultChecked = false;