我正在尝试让userInput将数据推入数组,但是,我不确定在这里做错了什么。当我运行程序时,它会回来答案是NaN。我在调用addtoList函数错误还是在某处逻辑错误?
<!DOCTYPE HTML>
<html>
<title>Grade Average</title>
<head>
<script>
var grades = ["0"];
var total = 0;
function addtoList()
{
var userInput = parseInt(txtBox1);
grades.push(userInput);
}
function getAverage()
{
for (var i = 0; i < grades.length - 1; i++)
{
total += total + grades;
}
if (grades.length > 0)
{
alert("Average is " + (total / grades.length));
}
}
</script>
</head>
<body>
<input type="text"
id="txtBox1">
<input type="button"
id="Sumbit"
value="Add to List"
onclick="addtoList()">
<input type="button"
id="Calculate"
value="Calculate"
onclick="getAverage()">
</body>
</html>
最佳答案
txtBox1应该定义为变量。"0"
的等级起始值是一个字符串,您不能对字符串进行加/减/乘/除运算,因为它没有数值。代替:"0"
一个数字值不带引号:0
-但是在您的代码中,由于您要计算平均值,因此可以将其保留为空白,除非您希望0为第一个值。
您无法通过引用输入框id
来获取输入框的值,需要使用document.querySelector(id)
获取该元素,然后使用value
方法指向输入框的值
每次重新计算值时,都应重新声明您的total
值。这意味着应该在计算总数的函数中声明它。
在您的for
循环中,您无需将其一直运行到grades.length -1
,因为您使用的是<
运算符,您只需说出grades.length
。另外,在for循环中,尝试添加数字时不能简单地说Grades
,因为它不是数字,而是array
。数字/值在数组内部。您可以通过引用设置为index
变量的i
值来获取其值。在代码中,这看起来像grades[i]
。
如评论中所指出的,可以通过说total += grades[i]
而不是total += total + grades[i]
来计算总数,从而将总数与总数加到等级索引的值上。
var grades = [];
var txtBox1 = document.querySelector("#txtBox1");
function addtoList()
{
var userInput = parseInt(txtBox1.value);
grades.push(userInput);
}
function getAverage()
{
var total = 0;
for (let i = 0; i < grades.length; i++)
{
total += grades[i];
}
console.log(total);
if (grades.length > 0)
{
alert("Average is " + (total / grades.length));
}
}
<input type="text"
id="txtBox1">
<input type="button"
id="Sumbit"
value="Add to List"
onclick="addtoList()">
<input type="button"
id="Calculate"
value="Calculate"
onclick="getAverage()">
关于javascript - JavaScript:将方法推到平均数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47185353/