Javascript if语句中的else块从未到达
我知道在IF语句上有很多类似的问题,但我还没有找到一个适合我的案例 我不明白为什么当条件应该在true和false之间切换时,else块从未被命中Javascript if语句中的else块从未到达,javascript,Javascript,我知道在IF语句上有很多类似的问题,但我还没有找到一个适合我的案例 我不明白为什么当条件应该在true和false之间切换时,else块从未被命中 document.getElementById(“outlineCheck”).addEventListener(“单击”, 函数(){ if(document.getElementById(“outlineCheck”).checked==true){ document.getElementById(“outlineCheck”).checked
document.getElementById(“outlineCheck”).addEventListener(“单击”,
函数(){
if(document.getElementById(“outlineCheck”).checked==true){
document.getElementById(“outlineCheck”).checked=false;
}否则{
控制台日志(“命中”)
document.getElementById(“outlineCheck”).checked=true;
}
});代码>
它永远不会到达其他
,因为您总是撤销用户所做的操作
该按钮最初未选中。当用户单击按钮时,它会被选中,因此进入if
块并取消选中按钮。下次用户单击按钮时,也会发生同样的情况。如果需要使用单选输入,则至少应该有两个单选输入,因此,第一次单击将为true,并且不能使其为false,您应该使用复选框 当@Barmar answer时,您一直在取消选中复选框。
如果您试图在选中或未选中模式下执行某些操作,
我认为您可以这样做,以获得这两种条件:
另外,尝试缓存DOM访问以获得更好的性能
范例
var$checkbox=document.getElementById(“outlineCheck”);
$checkbox.addEventListener(“单击”,函数(){
如果($checkbox.checked){
console.log('现在已选中')
}否则{
console.log('现在未选中')
}
});代码>
JS-Bin
试验
在您的实际代码中,您是否在渲染之前设置了处理程序?您在元素中硬编码了true(值=1),因此它始终等于true。也许可以尝试删除它?@user6854465他从不使用该值,这与它有什么关系?如果你想要在两种状态之间切换,请使用复选框,而不是单选按钮。你不需要JavaScript来切换,默认情况下就是这样。他似乎在检查“真实性”,这将导致if的第一个块。“Truthynes”似乎被设置为值属性您建议他缓存DOM以提高性能,但您导入jQuery却没有明确的原因?@LukeSalamone lol这是在我之前的示例中,当然我不会故意这么做……谢谢。结果使用了一个复选框,因为它允许我做我想做的事情