我有一个带有文本框的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>
答案 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
用于支持非整数。