2013-11-26 82 views
-2

我想要做的是從兩種形式獲取值,然後添加它們並顯示結果,問題是它不起作用,無法找出原因。是簡單的東西,但我是新的Javascript = /。這裏是我的代碼JavaScript問題與getElementById

<!DOCTYPE html> 
<html> 
    <head> 
     <title> Random Page </title> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    </head> 
    <body> 
     <form> 
      Escriba el primer número: <input type="number" id="txtNumber1"> 
     </form> 
     <br> 
     <form> 
      Escriba el segundo número: <input type="number" id="txtNumber2"> 
     </form> 
     <br> 
     <button id="btnSumar" onclick="Sumar()"> ¡Sumar! </button> 
     <br> 
     <p id="p"> I'm a paragraph </p> 
     <script> 
      function Sumar() { 
       document.getElementById("p").innerHTML="It works until here."; 
       var num1 = document.getElementById("txtNumber1").value; 
       var num2 = document.getElementById("txtNumber2").value; 
       this.resultado = num1 + num2; 
      } 
      document.getElementById("p").innerHTML="The result is " + resultado; 
     </script> 
    </body> 
</html> 

任何幫助將不勝感激。 Tahnks。

+0

[見這個答案](http://stackoverflow.com/a/20216482/1377002) – Andy

+0

你覺得呢'this.resultado = NUM​​1 + NUM2;'是幹什麼的?你什麼時候認爲'document.getElementById(「p」)。innerHTML =「結果是」+ rst.resultado;'執行?當變量更新時,innerHTML行不會奇蹟般地更新! – epascarello

+0

@UDB點擊按鈕「btnSumar」 – Blackmore

回答

0

你可以試試這個,我發現無效的方法this.resultado並在代碼rst.resultado因爲沒有根源這一點,你可以用parseInt或根據您輸入的號碼

function Sumar() { 
      document.getElementById("p").innerHTML="It works until here."; 
      var num1 = document.getElementById("txtNumber1").value; 
      var num2 = document.getElementById("txtNumber2").value; 

      var result = num1 + num2; // you can use parseInt or parseFloat based on your input number 
      document.getElementById("p").innerHTML="The result is " + result; 
     } 
+0

如果您打算使用'parseInt',您確實需要包含基數。 – Andy

+0

爲什麼不用parseFloat? – putvande

+0

爲什麼選擇downvote mr.Downvoters? –

1
<script> 
    function Sumar() { 
     document.getElementById("p").innerHTML="It works until here."; 
     var num1 = document.getElementById("txtNumber1").value; 
     var num2 = document.getElementById("txtNumber2").value; 
     var resultado = parseInt(num1) + parseInt(num2); 
     document.getElementById("p").innerHTML="The result is " + resultado; 
    } 
</script> 
+0

如果你打算使用'parseInt',你真的需要包含基數。 – Andy

+2

@Andy,我認爲radi參數是可選的。 – Christos

+0

[總是指定此參數](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt)... – Andy

-1

這裏parseFloat是兩個例子,一個使用標準的JavaScript,它應該回答基本的問題,一個使用globalize.js的例子,它將處理國際式的數字符號。

使用標準的JavaScript

使用parseInt()(或parseFloat())函數將文本字段參數轉換爲數字,並刪除字符,將最後的innerHTML行成蘇馬爾()函數,並改變rst.resultado和this.resutado to resultado。 jsFiddle example here

<script> 
    function Sumar() { 
     var num1 = parseInt(document.getElementById("txtNumber1").value); 
     var num2 = parseInt(document.getElementById("txtNumber2").value); 
     resultado = num1 + num2; 
     document.getElementById("p").innerHTML="The result is " + resultado; 
    } 
</script> 

使用Globalize.js允許國際數字格式

jQuery提供了與微軟合作開發一個腳本調用基於區域設置globalize.js該格式的數字。在this jsFiddle中,我以西班牙語作爲語言環境的示例,但它具有更多格式和語言環境。嘗試使用符號1.234,56來檢查計算。您可以使用toLocaleString()函數將計算的數字格式化爲本地化格式,但目前僅適用於Chrome和IE。您可以使用其他瀏覽器的regex,但這是我所有的時間。這裏是基本的腳本,但看看the jsFiddle來查看其他需要的js以及需要對錶單標籤進行的更改。

<script> 
    function Sumar() { 
     var num1 = Globalize.parseFloat(document.getElementById("txtNumber1").value); 
     var num2 = Globalize.parseFloat(document.getElementById("txtNumber2").value); 
     resultado = num1 + num2; 
     document.getElementById("p").innerHTML = "The result is " + resultado.toLocaleString("es-ES"); 
    } 
</script> 
+0

如果#txtNumber1的值是「1234,56」,該怎麼辦?'num1'是'NaN' – putvande

+0

[Stack Overflow:限制輸入到文本框:只允許數字和小數點](http://stackoverflow.com/questions/2808184/restricting-input-to-textbox-allowing-only-數字和小數點) –

+0

嗯..但「1234,56」是一些國家的數字,所以爲什麼要限制呢? – putvande