2014-09-30 22 views
0

我是新來的JavaScript ...下面的代碼顯示正確甚至當我提交了不正確的值,我不能得到的「其他」部分的工作:if和else比較數字的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>

+7

'='使一個分配。你想比較,這將是'=='。 'if(answer == 10)'。爲了補充一點,'answer'只是一個DOM元素,你需要得到它的值。 – George 2014-09-30 15:16:26

+0

如果(答案= 10)更改爲if(答案== 10) – JBC 2014-09-30 15:17:02

+0

您還需要訪問answer元素的值document.getElementById('answer')。value' – 2014-09-30 15:17:12

回答

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"返回值作爲一個字符串。

理想情況下,您應該使用parseInt()將它解析爲int

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

這將避免類型coersion。

最後,你想要compare這兩個值,所以你需要使用==運算符。 單一=,賦值運算符只會分配值,並且因爲賦值成功,所以總是會變爲true。

最好的做法是嚴格比較數據類型。使用===運營商。

+0

這個答案更正確,因爲它可以防止類型強制。 – wootscootinboogie 2014-09-30 15:18:47

+3

不要忘記'parseInt()'的_radix_參數。 – Barmar 2014-09-30 15:20:07

+0

@Barmar我最近正在開發一個項目,其中一位開發人員沒有注意jsHint,也沒有提供基數參數。他試圖解析一段日期(11-01-2011),發現添加這個基數是非常重要的! – wootscootinboogie 2014-09-30 15:51:41

1

您需要使用等號運算符==而不是賦值運算符=

此外,您需要獲得答案的價值,而不僅僅是元素。

<!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>

+0

謝謝大家的幫助! – 2014-09-30 15:45:07