javascript - 学生成绩数组,平均函数未实现

标签 javascript

我的第一个 JavaScript 类(class)的作业是创建一个应用程序,该应用程序将姓氏、名字和分数作为学生的输入。该应用程序应保留分数的运行平均值,并提供一个清除分数的按钮以及一个按姓氏排序的按钮。除了平均功能之外,我的一切都正常。我写了,但没有实现。我可能会错过一些完全简单的东西。我非常感谢您能提供的任何帮助。感谢您的宝贵时间!

.js 文件:

var $ = function (id) {
    return document.getElementById(id);
}

//the dreaded $ variable

var grades = [];
//array

//update scores with scores, first, last, sort by last
var update_scores = function () {
        var val = get_item_list(grades);
        $("scores").value = val;
        $("last_name").value = "";
        $("first_name").value = "";
        $("score").value = "";
        $("last_name").focus();
    }
    //function to add last, first, score to studentGrade
var student_grade_add_click = function () {


    var last = $("last_name").value;
    var first = $('first_name').value;
    var score = parseFloat($('score').value);

    grades.push([last, first, score]);
    update_scores();
}


var get_item_list = function (item_list) {
    if (item_list.length == 0) {
        return "";
    }
    var list = "";
    for (var i = 0; i < item_list.length; i++) {
        var current = item_list[i];
        for (var attribute in current) {
            list += current[attribute] + ", ";
        }
        list += "\n";
    }
    return list;
}

//average function
function getAverageScore(grades) { //function-takes grades array
    var i; //declare variable
    var numberOfStudents = grades.length; //declare variable along length  of array for number of students
    var sum = 0; //set sum to zero
    if (numberStudents > 0) { // step through grades if > 0 students
        for (i = 0; i < numberOfStudents; i++) { //increment by 1 through grades
            sum += grades[i][2]; //add each score to sum
        }
        return sum / numberOfStudents; //divide total of sum by how many students
    }
    return 0; // if no students, return 0
}

function clear_click() {
    $("form").reset();

    grades.splice(0, grades.length); //TO CLEAR ARRAY AS WELL AS FORM
}

var sort_click = function () //ENTIRE FUNCTION TO SORT ARRAY AND REPRINT
    {
        grades.sort();
        update_scores();
    }

window.onload = function () {

    $("add_button").onclick = student_grade_add_click;
    $("sort_button").onclick = sort_click;
    $("last_name").focus();
}

这是我的 .html 文件:

<!DOCTYPE html>

<head>
<title>Part 4</title>
<link rel="stylesheet" type="text/css" href="scores.css" />
<script type="text/javascript" src="scores.js"></script>
<link href='http://fonts.googleapis.com/css?family=Molengo' rel='stylesheet' type='text/css'>
</head>

<body>
<div id="content">
    <h1>Student Scores</h1>
    <div class="formLayout">
        <label>Last Name:</label>
        <input type="text" id="last_name"/><br/>

        <label>First Name:</label>
        <input type="text" id="first_name"/><br/>

        <label>Score:</label>
        <input type="text" id="score"/><br/>

        <label>&nbsp;</label>
        <input type="button" id="add_button" value="Add Student Score"/><br/>
    </div>
    <h2>Student Scores</h2>
<form id = "form">
    <p><textarea id="scores" rows="5" cols="60" disabled="disabled"></textarea></p>
</form>
    <div class="formLayout">
        <label>Average score:</label>
        <input type="text" id="average_score" disabled="disabled"/><br/>

        <label>&nbsp;</label>
        <input type="button" id="clear" value="Clear Student Scores" onclick="clear_click()"/><br/>

        <label>&nbsp;</label>
        <input type="button" id="sort_button" value="Sort By Last Name"/><br/>

    </div>
</body>
</html>     

最佳答案

您尚未调用函数getAverageScore(grades)。因此只需在 update_scores 函数中添加调用即可

var update_scores = function () {
    var val = get_item_list(grades);
    $("scores").value = val;
    $("last_name").value = "";
    $("first_name").value = "";
    $("score").value = "";
    $("last_name").focus();
    $("average_score").value = getAverageScore(grades);
}

getAverageScore(grades) 函数中,变量是 numberOfStudents 而不是 if 中的 numberStudents情况。

function getAverageScore(grades) { //function-takes grades array
var i; //declare variable
var numberOfStudents = grades.length; //declare variable along length  of array for number of students
var sum = 0; //set sum to zero
if (numberOfStudents > 0) { // step through grades if > 0 students
    for (i = 0; i < numberOfStudents; i++) { //increment by 1 through grades
        sum += grades[i][2]; //add each score to sum
    }
    return sum / numberOfStudents; //divide total of sum by how many students
}
return 0; }

经过这些修改,代码可以正常工作了!

关于javascript - 学生成绩数组,平均函数未实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23463882/

相关文章:

javascript - 如何在 p5.js 中使用 dist() 来解释旋转?

javascript - 我应该在优化的 javascript 构建中嵌入第三方 javascript 库吗?

javascript - 当我想查看更改时,如何在不重新启动 nodejs 的情况下编辑我的服务器文件?

javascript - 获取集合时未调用渲染函数

javascript - 如果映射的 td 等于某些内容,则删除表行

Javascript:showDiv 添加 anchor #top

javascript - 一行上有多个变量,后面有相同的 =

javascript - 测试浏览器是否支持多文件上传?

javascript - 避免两个 php 请愿同时发生

javascript - 使用 jquery/javascript 进行复选框更改在引导模式内不起作用