我写这篇文章的目的是在每个数组元素中存储名称和分数。
预期输出:
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] + " " + students[y][1] + "<br>";
}
document.getElementById("result").innerHTML = e;
}
请注意,我对 addStudent 函数进行了一些更改,只是将每个学生添加为由他/她的姓名和分数组成的单独数组。
关于JavaScript 数组返回 "a"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41649678/