我正在尝试让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/

10-14 00:43