点击计算按钮时Checkbox自动被勾选,应如何停止该异常行为?
问题根因
你代码的if判断逻辑里误用了赋值运算符:if (checkbox.checked = true) 中的=是赋值操作,每次执行到这行代码时,都会直接给checkbox的checked属性强制赋值为true,同时该表达式的返回值也为true,因此else分支永远不会触发,这就是每次点击计算按钮后复选框自动被选中的原因。
修复方案
把赋值运算符替换为比较运算符即可,这里因为判断的是布尔值,也可以直接省略和true的比较步骤,写法更简洁。
修复后的完整JS代码如下:
function run() { var checkbox = document.getElementById('side1'); // 直接用checked属性本身作为判断条件,无需额外比较 var output = checkbox.checked ? 5 : 3; document.getElementById("totalvalue").innerHTML = output; }
如果要保留你原本的if-else写法,修改如下即可:
function run() { var checkbox = document.getElementById('side1'); var output; // 用===做全等比较,避免隐式类型转换的潜在问题 if (checkbox.checked === true) { output = 5; } else { output = 3; } document.getElementById("totalvalue").innerHTML = output; }
额外优化建议
你原本的代码在if和else分支中分别声明了output变量,虽然JS的变量提升机制不会触发语法错误,但统一在函数顶部声明变量会更规范,避免逻辑歧义。
内容的提问来源于stack exchange,提问作者Lute
相关产品推荐
相关产品推荐

