簡體   English   中英

javascript數組在文本區域中顯示未定義

[英]javascript array displaying undefined in text area

因此,我現在正在做一些家庭作業,無法理解為什么我的數組顯示為未定義。 抱歉,這很簡單,但是我對此很陌生。 我將嘗試解釋我在這里所做的事情。

我在三個輸入字段中收集學生的姓,名和年級。 我通過它們的ID來獲取所有這些元素,並將所有這些輸入放入一個名為studentGrade的數組中。 然后,我將該數組的內容推入另一個名為grades的數組中,然后將其作為參數傳遞給名為get_item_list的函數。 從那里,我嘗試遍歷該參數的內容,以便可以將其顯示在ID為“分數”的文本字段中。

我非常感謝所有輸入,希望我能了解自己在做錯什么。

var grades = [];

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

var update_display = function () {
    $("scores").value = get_item_list(grades);

    $("last_name").value = "";
    $("first_name").value = "";
    $("score").value = "";

$("last_name").focus();
}    

var student_grade_add_click = function() {
    var studentGrade = [];
    studentGrade["last_name"] = $("last_name").value;
    studentGrade["first_name"] = $("first_name").value;
    studentGrade["score"] = parseFloat($("score").value);

    if ( studentGrade["last_name"] == "" ) return;
    if ( studentGrade["last_name"] == "" ) return;
    if ( isNaN(studentGrade["score"]) ) return;

    grades.push(studentGrade);
    update_display();
}

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

window.onload = function () {
    $("add_button").onclick = student_grade_add_click;
    $("last_name").focus();
}

這是我正在使用的JavaScript

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Student Scores</title>
<link rel="stylesheet" type="text/css" href="default.css" />
<script type="text/javascript" src="student_scores.js"></script>
</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>
    <p><textarea id="scores" rows="5" cols="60"></textarea></p>
     <div class="formLayout">
        <label>Average score:</label>
        <input type="text" id="average_score"/><br />

        <label>&nbsp;</label>
        <input type="button" id="clear_button" value="Clear Student Scores" /><br />

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

還有我制作的HTML,再次感謝。

我認為您需要在將值連接到list之前將list初始化為字符串:

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 attr in current ) {
           list += current[attr] + "\n";
       }
    }
    return list;
}

另外, studentGrade不是數組,它是一個對象(即使您像數組一樣設置鍵):

var studentGrade = {};

我所做的更改有效,這是您更新的小提琴: http : //jsfiddle.net/LFhNQ/1/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM