2013-08-27 32 views
2

我是Javascript新手,如果有人幫助我理解我做錯了什麼,我會很感激。我試圖通過從輸入字段獲取值來計算梯形的表面積。當我按下「Calculate S」按鈕時,我得到一個「Nan」作爲答案。 這是HTML代碼的主要部分:從輸入字段獲取數值,並用它們來計算梯形的表面積

<form method="post"> 
    <label for="a">a</label> 
    <input type="text" id="a"/> <br/> 
    <label for="b">b</label> 
    <input type="text" id="b"/> <br/> 
    <label for="h">h</label> 
    <input type="text" id="h"/> <br/> 
    <button onclick="alert(S)">Calculate S</button> 
    </form> 

這是劇本我使用獲得的價值和計算表面:提前

  <script type="text/javascript"> 
      var a=parseInt(document.getElementById("a"), 10); 
      var b=parseInt(document.getElementById("b"), 10); 
      var h=parseInt(document.getElementById("h"), 10); 
      var S=parseInt(((a+b)/2)*h, 10); 
     </script> 

謝謝!

回答

1
  1. 在輸入元素上使用.value屬性來獲取其內容。然後撥打parseInt獲得一個號碼。
  2. 也不需要parseInt結果。
    var S = ((a + b)/2) * h;
  3. 將代碼包裝在可調用的函數中,如果您希望它在按鈕單擊時執行(當您的瀏覽器解析代碼時,您將執行此操作)。

例子在這裏找到:http://jsfiddle.net/bpwEh/

更新代碼:

<head> 
    <!-- ... --> 
    <script> 
     function calc(){ 
      var a=parseInt(document.getElementById("a").value, 10); 
      var b=parseInt(document.getElementById("b").value, 10); 
      var h=parseInt(document.getElementById("h").value, 10); 
      return ((a+b)/2)*h, 10; 
     } 
    </script> 
</head> 
<body> 
    <form method="post"> 
     <label for="a">a</label> 
     <input type="text" id="a"/> <br/> 
     <label for="b">b</label> 
     <input type="text" id="b"/> <br/> 
     <label for="h">h</label> 
     <input type="text" id="h"/> <br/> 
     <button onclick="alert(calc()); return false;">Calculate S</button> 
    </form> 
</body> 
2

您需要獲取值出每個輸入的,而不僅僅是輸入,就像這樣:

 <script type="text/javascript"> 
     var a=parseInt(document.getElementById("a").value, 10); 
     var b=parseInt(document.getElementById("b").value, 10); 
     var h=parseInt(document.getElementById("h").value, 10); 
     var S=((a+b)/2)*h; 
    </script> 
+0

+1注意到問題。也就是說,代碼需要位於按鈕調用的函數中,否則它只會採用默認值(這裏爲空字符串)並解析它們(NaN)以給出結果NaN。 –

+0

@Kolink,好點,對我來說有一個問題太多問題。 :-) –

相關問題