Javascript 复选框输入计算为选中,尽管未设置选中

Javascript 复选框输入计算为选中,尽管未设置选中,javascript,css,html,Javascript,Css,Html,所以我试图弄明白为什么下面的计算结果是真的,我一直认为如果checked属性被省略,那么它就不会计算为checked。我已经仔细检查了下面的内容,以确保状态不会因为一些JS而改变。在Chrome、Safari和Firefox上也进行了验证,所有这些都会通过复选框进行评估。你知道为什么吗 <input type="checkbox" name="shipping[same_as_billing]" id="shipping:same_as_billing" value="1" onclick

所以我试图弄明白为什么下面的计算结果是真的,我一直认为如果
checked
属性被省略,那么它就不会计算为checked。我已经仔细检查了下面的内容,以确保状态不会因为一些JS而改变。在Chrome、Safari和Firefox上也进行了验证,所有这些都会通过复选框进行评估。你知道为什么吗

<input type="checkbox" name="shipping[same_as_billing]" id="shipping:same_as_billing" value="1" onclick="shipping.setSameAsBilling(this.checked);">

您可以将简单的onclick函数设置为。其中
this.checked
设置
复选框的状态
是否选中

功能设置计费(状态){
控制台日志(状态);
如果(状态==真){
console.log('checked')
返回true;
}否则{
console.log('未选中')
返回false;
}
}

为您的复选框创建控制台日志,如下所示:

<input type="checkbox" onclick="console.log(this.defaultChecked)"/>
摘自W3C:

defaultChecked属性返回已检查属性的默认值 属性

如果默认选中复选框,则此属性返回true, 否则返回false


如果最初未选中,则第一次单击时应为true(因为它随后被选中),然后为false,然后为true,等等。defaultChecked属性将告诉您它最初是否被选中(即,是否设置了checked属性)。在Firefox中尝试简化的
似乎会产生预期的结果。第一次单击会生成反映其新选中状态的
true
,随后的单击同样会在
false
true
之间循环。如果您希望出现其他行为,则必须指定所需的结果。感谢@RobG-我可以看到
defaultChecked
属性设置为false,因此随后一定会有某些内容影响状态,尽管在检查DOM时未明显设置/创建checked属性
this.defaultChecked = false;