首页 > 解决方案 > If 语句不计算值

问题描述

我正在构建一个小测验,其中有一系列循环来计算问题的响应值以及一个基本上是“是/否”的问题。

for 循环正在完成它们的工作并正确存储值。但是,我的是/否问题的检查值不是。我不确定这是否是因为我没有为它定义变量?(我不认为我需要一个。)

function process() {
  var okay = 0;
  var bad = 0;

  var form = document.myForm;
  var i = 0;

  for (i = 0; i < form.q2.length; i++)
    if (form.q2[i].checked) value = form.q2[i].value;
  if (value == "1") {
    bad++;
  }
  if (value == "2") {
    bad++;
  }
  if (value == "3") {
    okay++;
  }

  for (i = 0; i < form.q3.length; i++)
    if (form.q3[i].checked) value = form.q3[i].value;
  if (value == "1") {
    bad++;
  }
  if (value == "2") {
    bad++;
  }
  if (value == "3") {
    okay++;
  }

  var out = "bad";
  i = bad;

  if (okay > i && document.getElementById("q1").value == 1) {
    out = "https://google.com", i = okay;
  }
  if (okay > i && document.getElementById("q1").value == 0) {
    out = "https://www.bing.com", i = bad;
  }
  location.href = out;
}

function err(msg, url, line) {
  location.href = "error.html";
}
<html>

<body>
  <h3>Test</h3>

  <form name="myForm">

    <b>How are you feeling?</b><br>
    <input type="radio" name="q1" id="q1" value="0">Bad<br>
    <input type="radio" name="q1" id="q1" value="1">Good<br><br>

    <b>Question 1</b><br>
    <input type="radio" name="q2" value="1">Answer 1<br>
    <input type="radio" name="q2" value="2">Answer 2<br>
    <input type="radio" name="q2" value="3">Answer 3<br><br>

    <b>Question 2</b><br>
    <input type="radio" name="q3" value="1">Answer 1<br>
    <input type="radio" name="q3" value="2">Answer 2<br>
    <input type="radio" name="q3" value="3">Answer 3<br><br>

    <input type="button" value="Show Results" onclick="process();">
    <br>
    <br>
  </form>
</body>

</html>

标签: javascript

解决方案


如果没有大括号,for循环只会影响下一条语句。

像这样改变你的for循环:

for (i = 0; i < form.q2.length; i++) {
  if (form.q2[i].checked) {
    value = form.q2[i].value;
  }

  if (value == "1") {
    bad++;
  }

  if (value == "2") {
    bad++;
  }

  if (value == "3") {
    okay++;
  }
}

推荐阅读