Javascript 用于添加数组返回值的函数

Javascript 用于添加数组返回值的函数,javascript,html,Javascript,Html,我有一个带有文本框的HTML表单,你可以输入一个类似“1+2+8”的字符串,它会给出数字的总数 我的脚本旨在添加数组“num”的所有数字并警告该值。问题在于警报显示的是NAN,而不是总数。 num中的值是浮点数,但警报仍给出NaN。 我已经看过了,但这不是同一个问题。 这可能是什么原因造成的 下面是HTML/JS <html> <head> <script type="text/javascript"> function handl

我有一个带有文本框的HTML表单,你可以输入一个类似“1+2+8”的字符串,它会给出数字的总数

我的脚本旨在添加数组“num”的所有数字并警告该值。问题在于警报显示的是NAN,而不是总数。 num中的值是浮点数,但警报仍给出NaN。 我已经看过了,但这不是同一个问题。 这可能是什么原因造成的

下面是HTML/JS

<html>
  <head>
    <script type="text/javascript">


      function handleClick(event)
      {



        alert(this.textBox1.value);

        var num = this.textBox1.value.split("+"); 


        //convert string array to numbers
        for(var i=0; i<num.length; i++)
        {
            num[i] = +num[i]; 
        }

       // add up the values
        for(var i=0; i<num.length; i++)
        {
            var total = i + total;
        }
        alert(total); //Displays NaN instead of total



        event.preventDefault(); // disable normal form submit behavior
        return false; // prevent further bubbling of event
      }
      function doit()
      {

        document.forms.myform.addEventListener("submit", handleClick, true);
        return true;
      }
    </script>
  </head>


  <body onload="doit()">
    <form name="myform">
      <div>
          <textarea name="textBox1" rows="10" cols="80">
1+1
         </textarea>
      </div>
      <input type="submit" value="Update"/>

    </form>
  </body>
</html>

函数handleClick(事件)
{
警报(this.textBox1.value);
var num=this.textBox1.value.split(“+”);
//将字符串数组转换为数字

对于(var i=0;i尝试使用parseFloat()函数显式地将其解析为float

乙二醇

您可以在以下位置阅读文档:

在将字符串转换为整数时使用
parseInt()
函数。使用
parseFloat
支持非整数。

在for循环外声明total变量并将其初始化为0。您还必须访问数组中的实际值(
num[i]
),而不是循环变量(
i

以下是解决方案:

var total = 0;
for(var i=0; i<num.length; i++)
{
    total = num[i] + total;
}
var总计=0;

对于(var i=0;iI)我尝试将其更改为“num[i]=parseFloat(i);”,但这与修复NaN问题的问题相同,但现在我得到了非常奇怪的结果,例如5+5+5=6和5+5=1@qwertie:您当然不想将循环变量i添加到结果中。@FelixKling我应该已经看到了。它应该是num[i]在循环的第一次迭代中,
i+total
0+undefined
,即
NaN
。因此,任何其他操作都会导致
NaN
。您必须使用有意义的值初始化
i
var total = 0;
for(var i=0; i<num.length; i++)
{
    total = num[i] + total;
}