如果和Else比较数字JavaScript

时间:2014-09-30 15:15:14

标签: javascript if-statement

我是JavaScript新手...以下代码显示正确,即使我提交的值不正确,我也无法让“其他”部分工作:

<!doctype html>
<html>

<head>
  <script type="text/javascript">
    /*<![CDATA [*/
    function myFunction() {
        var answer = document.getElementById('answer');
        if (answer = 10)
          document.getElementById("valid").innerHTML = "Correct!";
        else
          document.getElementById("valid").innerHTML = "Please, Try Again!";
      }
      /* ]]> */
  </script>
</head>

<body>
  <h2>What is 3+7=?</h2>
  <form>
    <input type="text" id="answer">
    <input type="submit" onClick="myFunction(); return false;">
  </form>
  <div id="valid"></div>
</body>

</html>

2 个答案:

答案 0 :(得分:3)

将您的功能更改为

function myFunction() {
    var answer = parseInt(document.getElementById('answer').value,10);
    if (answer === 10)
        document.getElementById("valid").innerHTML = "Correct!";
    else
        document.getElementById("valid").innerHTML = "Please, Try Again!";
}

它会像魅力一样发挥作用。

解释

id="answer"的元素是输入。要检索输入的值,您需要.value

var answer = document.getElementById('answer').value;

现在,这会将input type="text"中的值作为字符串返回。

理想情况下,您应该使用int将其解析为parseInt()

var answer = parseInt(document.getElementById('answer').value);

这样可以避免类型错误。

最后,您希望compare这两个值,因此您需要使用==运算符。 单=,赋值运算符只会赋值,并且由于赋值成功,因此总是会生成true。

最佳做法是使用与数据类型的严格比较。使用===运算符。

答案 1 :(得分:1)

您需要使用等于运算符==而不是赋值运算符=

此外,您需要获得答案的值,而不仅仅是元素。

&#13;
&#13;
<!doctype html>
<html>

<head>
  <script type="text/javascript">
    /*<![CDATA [*/
    function myFunction() {
        var answer = document.getElementById('answer').value;
        if (answer == 10)
          document.getElementById("valid").innerHTML = "Correct!";
        else
          document.getElementById("valid").innerHTML = "Please, Try Again!";
      }
      /* ]]> */
  </script>
</head>

<body>
  <h2>What is 3+7=?</h2>
  <form>
    <input type="text" id="answer">
    <input type="submit" onClick="myFunction(); return false;">
  </form>
  <div id="valid"></div>
</body>

</html>
&#13;
&#13;
&#13;