2013-11-26 50 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