我知道IF语句上有很多类似的问题,但是我还没有发现与我的情况有关的问题
当条件应该在true和false之间切换时,我看不到为何else块从未被击中
document.getElementById("outlineCheck").addEventListener("click",
function() {
if (document.getElementById("outlineCheck").checked == true) {
document.getElementById("outlineCheck").checked = false;
} else {
console.log("hit")
document.getElementById("outlineCheck").checked = true;
}
});
<label><input asp-for="CourseOfferingOverviewFlag" value="1"
id="outlineCheck" type="radio" />
答案 0 :(得分:2)
它永远不会到达else
,因为您总是撤消用户所做的事情。
该按钮最初未被选中。当用户单击按钮时,它会被选中,因此您进入if
块并取消选中该按钮。下次用户单击按钮时,会发生同样的事情。
答案 1 :(得分:1)
在@Barmar回答中,您一直在取消选中该复选框。
如果您尝试以选中或未选中模式进行操作,
我认为您可以这样做来获得这两个条件:
P.S。尝试缓存DOM访问以提高性能。
示例
var $checkbox = document.getElementById("outlineCheck");
$checkbox.addEventListener("click", function() {
if ($checkbox.checked) {
console.log('Now is checked')
} else {
console.log('And now is unchecked')
}
});
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<input type="checkbox" id="outlineCheck">TEST
</body>
</html>
答案 2 :(得分:0)
如果您需要使用单选按钮输入,则应该至少有两个输入单选按钮,因此,第一次单击将是正确的,并且不能将其设置为错误,应改为使用复选框。 more info