JavaScript 数组返回 "a"?

标签 javascript arrays loops

我写这篇文章的目的是在每个数组元素中存储名称和分数。

预期输出:

 var students = [
    ['David', 80],
    ['Dane', 77],
    ['Dick', 88],
    ['Donald', 95],
    ['Dean', 68]
    ];

但是,我偶然发现了在数组元素中分配第二个值...在 codepen.io 中,返回的值是“a”。

HTML:

name: <input type="text" id="namebox"><br><br>
score: <input type="text" id="scorebox"><br><br>

<input type="button" value="Add" onclick="addStudent()">

<input type="button" value="Display" onclick="displayArray()">

Javascript:

var x = 0;
var students = [];

function addStudent(){
    students[x] = document.getElementById("namebox").value;
    students[x][1] = document.getElementById("scorebox").value;
    alert(students[x] + " added");
    x++;
    document.getElementById("namebox").value = "";
    document.getElementById("scorebox").value = "";
    document.getElementById("namebox").focus();
    document.getElementById("scorebox").focus();
}

function displayArray(){
    var e = "<hr>";

    for (y = 0; y < students.length; y++)
    {
        e += students[y] + students[y][1] + "<br>";
    }
    document.getElementById("result").innerHTML = e;
}

最佳答案

按照@Y.C.的建议。如果您添加 students[x][0] = document.getElementById("namebox").value; 您的代码将起作用。我想提出一个小的修改,以便你的 json 数组保持其“模式”。将 document.getElementById("scorebox").value 括在 parseInt() 中,以便获得数字形式的分数。换句话说,只需编写 parseInt(document.getElementById("scorebox").value);

更新

因为我之前的建议仅在您预定义数组时才有效,所以我编辑了代码,所以现在这应该有效。

我没有使用 Push() 函数为每个单元格分配值,所以现在 addStudent 方法如下所示:

function addStudent(){
  students.push(document.getElementById("namebox").value, parseInt(document.getElementById("scorebox").value));
alert(students[x] + " added");
x++;
document.getElementById("namebox").value = "".focus();
document.getElementById("scorebox").value = "".focus();
document.getElementById("namebox").focus();
document.getElementById("scorebox").focus();
}

更新 #2

我的上次更新只是为了让 addStudent 能够工作,因为我认为这就是问题所在。所以现在整个事情必须按照以下步骤进行:

在你的html上添加一个带有id结果的div,因为你似乎忘记了

<div id="result"></div>

在您的 Javascript 上只需复制并粘贴以下内容

var x = 0;
var students = [];

    function addStudent(){
      students.push([document.getElementById("namebox").value, parseInt(document.getElementById("scorebox").value)]);
    alert(students[x] + " added");
    x++;
    document.getElementById("namebox").value = "".focus();
    document.getElementById("scorebox").value = "".focus();
    document.getElementById("namebox").focus();
    document.getElementById("scorebox").focus();
    }

    function displayArray(){
    var e = "<hr>";

    for (y = 0; y < students.length; y++)
    {
    e += students[y][0] + "&nbsp;" + students[y][1] + "<br>";
    }
    document.getElementById("result").innerHTML = e;
    }

请注意,我对 addStudent 函数进行了一些更改,只是将每个学生添加为由他/她的姓名和分数组成的单独数组。

关于JavaScript 数组返回 "a"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41649678/

相关文章:

javascript - 递归返回 undefined 而不是 true

python - 如何使用 .csv 文件中同一列中的值进行操作

javascript - Highcharts 柱形图,数据来自 mongodb

javascript - Bootstrap 4 - 水平对齐的 Accordion

javascript - 为什么我的递归函数只适用于一级?

c - 在二维数组 c 上使用 realloc

php - 将值存储到数组并计算数组总值

Matlab 使用日期向量对日期和时间序列进行向量化实现

javascript - 如何删除 HTML 中的输入建议

c++ - 没有 [ ] 的数组等于什么? C++