否则,如果从未到达语句则阻塞

时间:2019-08-08 00:56:18

标签: javascript

我知道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" />

3 个答案:

答案 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