Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript if语句中的else块从未到达_Javascript - Fatal编程技术网

Javascript if语句中的else块从未到达

Javascript if语句中的else块从未到达,javascript,Javascript,我知道在IF语句上有很多类似的问题,但我还没有找到一个适合我的案例 我不明白为什么当条件应该在true和false之间切换时,else块从未被命中 document.getElementById(“outlineCheck”).addEventListener(“单击”, 函数(){ if(document.getElementById(“outlineCheck”).checked==true){ document.getElementById(“outlineCheck”).checked

我知道在IF语句上有很多类似的问题,但我还没有找到一个适合我的案例

我不明白为什么当条件应该在true和false之间切换时,else块从未被命中

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这是在我之前的示例中,当然我不会故意这么做……谢谢。结果使用了一个复选框,因为它允许我做我想做的事情