JavaScript 事件仅循环一次且无输出

标签 javascript html dom dom-events

我正在编写一段 JS 代码来计算给定一些单独成绩的最终成绩,并将结果输出到 html 页面中,但是当我触发事件和函数时,它仅在 for 循环中循环一次,而不会到达代码的其余部分(我使用 print 语句进行了检查)但我不明白循环出了什么问题导致代码的其余部分无法到达。

HTML:

<!DOCTYPE html>
<html>
    <head>
        <title>Problem 2</title>
        <script src="grades.js" type="text/javascript"></script>
    </head>

    <body>
        <h1>Grade Calculator</h1>
        <form id ="myForm">
            <div id="assignments">
            HW <input type="text" size="1"/> / <input type="text" size="1"/><br/>
            HW <input type="text" size="1"/> / <input type="text" size="1"/><br/>
            HW <input type="text" size="1"/> / <input type="text" size="1"/>
            </div>

            <div>
                <input type="checkbox" id="curve"/> Curve +5?
            </div>

            <div id="resultsarea">
                <p>
                    <!--add buttons here -->
                    <button type="button" id="comp">Compute</button>
                    <button type="button" id="clr">Clear</button>
                </p>

                <!-- add results here -->
            </div>
        </form>
    </body>
</html>

JS:

window.onload = pageLoad;

function pageLoad()
{
    var cbutton = document.getElementById("comp");
    cbutton.onclick = compute;
}

function compute()
{
    var list = document.getElementsByTagName("input");
    var marks = 0;
    var total = 0;
    for (var i=1; i <= list.length; i++)
    {
        if(list[i].type == "text")
        {
            if (i%2 != 0)
            marks += list[i].value;
            else
            total += list[i].value;
        }
    }
    var result = Math.round(marks/total);
    if (document.getElementById("curve").checked)
    result += 5;
    var out = document.createElement("div");
    var t = document.createTextNode(result);
    out.appendChild(t);
    var display = document.getElementById("resultsarea");
    display.append(out);
}

最佳答案

数组值从 0 开始。尝试 i=0 且 i<=list.length-1。您没有计算第一个列表元素。

您是从 list[1].type 开始,而不是 list[0].type。

关于JavaScript 事件仅循环一次且无输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15719806/

相关文章:

javascript - 在 Javascript 中设置 div 链接的样式

javascript - 通过 chrome 扩展访问控制台日志命令

java - 格式错误的 XML/HTML 解析

javascript - 文件上传:如何上传外部云文件夹中的文件javascript修改

javascript - 在 JavaScript 中使用 "new"关键字创建包装的 BigInt 或 Symbol 之间有区别吗?

javascript - nodejs console.log 在错误之前未写入

javascript - onclick 处理程序中的 this 关键字不起作用

javascript - jQuery 扫描 div 类名,使用这些类名打印匹配的复选框

javascript - 使用标签切换 <section> 背景

html - 如何制作没有图像的渐变背景?