2016-05-13 60 views
2

我是Java Script的新學習者。我的數學等式有問題。它顯示錯誤的答案。 請幫我找到這個錯誤。java腳本顯示錯誤答案的數學方程

<html> 
 
    <head> 
 
\t <title>calculation of (p+r)*(n+r) </title> 
 

 
     <script> 
 
      function calculate() 
 
      { 
 
       var p = document.getElementById("p").value; 
 
       var n = document.getElementById("n").value; 
 
       var r = document.getElementById("r").value; 
 
       
 
\t \t \t  
 
       var calculationa= p+r; 
 
\t \t \t  
 
\t \t \t var calculationb= n+r; 
 
\t \t \t 
 
\t \t \t  
 
\t \t \t var cal_final=Number(calculationa)*Number(calculationb); 
 
\t \t \t  
 
\t \t \t document.getElementById("result").innerHTML=cal_final; 
 
      } 
 
     </script> 
 
    </head> 
 

 
    <body> 
 
     <h1>calculation of (p+r)*(n+r)</h1> 
 
     p: <input id="p"><br/> 
 
     n: <input id="n"><br/> 
 
     r: <input id="r"><br/> 
 

 
     
 

 
     <button onclick="calculate()">calculate</button> 
 
\t <p id="result"></p> 
 
    </body> 
 
</html>

這是我要解決的方程。 數學顯示這個結果是不正確的。 http://i.stack.imgur.com/Ir9hs.png

我該如何解決這個問題?

+0

提示:所有的'.value's是字符串,即使他們看起來像數字。 – georg

+0

在'p'之前的'+'會將它轉換爲'Number''var calculationa = + p + r; var calculationb = + n + r;' - 更新這兩行! –

+0

[加法不能在JavaScript中工作]可能的重複(http://stackoverflow.com/questions/8377410/addition-is-not-working-in-javascript) –

回答

2

檢查。所以,p+r = 1+2 = 12

使用parseInt()將值解析爲整數並進行計算。或者使用parseFloat()

function calculate() { 
 
    var p = parseInt(document.getElementById("p").value); 
 
    var n = parseInt(document.getElementById("n").value); 
 
    var r = parseInt(document.getElementById("r").value); 
 

 
    var calculationa= p+r; 
 

 
    var calculationb= n+r; 
 

 
    var cal_final=Number(calculationa)*Number(calculationb); 
 

 
    document.getElementById("result").innerHTML=cal_final; 
 
}
<h1>calculation of (p+r)*(n+r)</h1> 
 
    p: <input id="p"><br/> 
 
    n: <input id="n"><br/> 
 
    r: <input id="r"><br/> 
 

 
    <button onclick="calculate()">calculate</button> 
 
    <p id="result"></p>

+0

非常感謝。我今天學到了新東西。 –

0

在Javascript var value考慮爲字符串。

使用整數值加法parseInt()

對於浮動值附加使用parseFloat()

請的值被分配給pnr作爲字符串的更多信息http://www.tutorialspoint.com/java/java_numbers.htm

function calculate() 
{ 
    var p = document.getElementById("p").value; 
    var n = document.getElementById("n").value; 
    var r = document.getElementById("r").value; 


    var calculationa= parseInt(p)+parseInt(r); 

    var calculationb= parseInt(n)+parseInt(r); 


    var cal_final=parseInt(calculationa)*parseInt(calculationb); 

    document.getElementById("result").innerHTML=cal_final; 
} 
1

也可以試試這個.....

function calculate() 
 
      {    
 

 
    var p= Number(document.getElementsByName("p")[0].value); 
 
    var n= Number(document.getElementsByName("n")[0].value); 
 
    var r= Number(document.getElementsByName("r")[0].value); 
 
    var sum1 = p+ r; 
 
    var sum2 = n+ r; 
 
    var res=sum1 *sum2; 
 

 
    document.getElementsByName("result1")[0].value = res; 
 
         
 
      }
<h1>calculation of (p+r)*(n+r)</h1> 
 
     p: <input type="text" name="p"><br/> 
 
     n: <input type="text" name="n"><br/> 
 
     r: <input type="text" name="r"><br/> 
 
     <br/> 
 
<input type="button" name="add" value ="add" onClick="calculate()" /> 
 
result: <input type="text" name="result1"><br/>