添加数组值的函数返回NaN

时间:2014-03-16 07:29:31

标签: javascript html

我有一个带有文本框的HTML表单,您可以输入一个字符串,如" 1 + 2 + 8"它会给你总数。

我的脚本是为了添加数组的所有数字" num"并警告价值。问题是警报显示NAN而不是总数。 num中的值是浮点数,但警报仍然给出了NaN。 我看过this question,但这不是同一个问题。 可能导致这种情况的原因是什么?

这是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>

3 个答案:

答案 0 :(得分:2)

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

以下是解决方案:

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

答案 1 :(得分:0)

尝试使用parseFloat()函数

将其显式解析为float

例如

parseFloat("3.14");

您可以阅读文档 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseFloat

答案 2 :(得分:0)

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