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