返回与特征关联的名称的Javascript关联数组
我试图在有输入框的地方编写代码,如果我输入“A”,我会得到数组中所有获得“A”分数的学生的名字。我觉得我正在接近,但我只是不太明白我需要做什么,使这个代码的功能。任何帮助都将不胜感激返回与特征关联的名称的Javascript关联数组,javascript,html,arrays,associative,Javascript,Html,Arrays,Associative,我试图在有输入框的地方编写代码,如果我输入“A”,我会得到数组中所有获得“A”分数的学生的名字。我觉得我正在接近,但我只是不太明白我需要做什么,使这个代码的功能。任何帮助都将不胜感激 <!DOCTYPE html> <html> <head> <title> Javascript </title> <script> var students = [ {name:"Lina",grade:"F"}, {name:"Fr
<!DOCTYPE html>
<html>
<head>
<title> Javascript </title>
<script>
var students = [
{name:"Lina",grade:"F"},
{name:"Fredrik",grade:"D"},
{name:"Sara",grade:"C"},
{name:"Lucia",grade:"B"},
{name:"Hans",grade:"A"},
{name:"Jonathan", grade: "A"}
]
gradesByLetter = ['A', 'B', 'C', 'D', 'F'].map(function(letter){
return students.filter(function(student){
return student.grade == letter;
});
});
gradesByLetter.forEach(function(list){
list.forEach(function(student){
document.getElementById(student.grade).innerHTML += "<li>" + student.name + " (" + student.grade + ")"
});
});
f1.addEventListener('submit', function(evt){
evt.preventDefault(); //ignore this for now but this will stop the error
studentList.innerHTML += "<li>" + studentName.value + " (" + grade.value + ")"
});
</script>
</head>
<body>
<h1>Min Rubik</h1>
<form id="f1">
<input type="text" id="studentName" placeholder="Student Name">
<input type="text" id="grade" placeholder="Grade">
<input type="submit" value="Add">
</form>
<h2>Students:</h2>
<ul id="studentList">
<ol id="A"></ol>
<ol id="B"></ol>
<ol id="C"></ol>
<ol id="D"></ol>
<ol id="F"></ol>
</ul>
</body>
</html>
Javascript
var学生=[
{姓名:“丽娜”,年级:“F”},
{姓名:“弗雷德里克”,年级:“D”},
{姓名:“Sara”,年级:“C”},
{姓名:“卢西亚”,成绩:“B”},
{姓名:“汉斯”,成绩:“A”},
{姓名:“乔纳森”,成绩:“A”}
]
gradesByLetter=['A','B','C','D','F'].map(函数(字母){
返回student.filter(函数(student)){
返回student.grade==字母;
});
});
gradesByLetter.forEach(函数(列表){
list.forEach(函数(学生){
document.getElementById(student.grade).innerHTML+=“”+student.name+”(“+student.grade+”)
});
});
f1.addEventListener('submit',函数(evt){
evt.preventDefault();//暂时忽略此选项,但这将停止错误
studentList.innerHTML+=“ ”+studentName.value+”(“+grade.value+”)
});
魔方
学生:
答案如下,如果你将成绩留空,它将显示所有学生
<!DOCTYPE html>
<html>
<head>
<title>Javascript</title>
</head>
<body>
<h1>Min Rubik</h1>
<form id="f1">
<input type="text" id="studentName" placeholder="Student Name">
<input type="text" id="grade" placeholder="Grade">
<input type="button" id="click_me" value="Add">
</form>
<h2>Students:</h2>
<ul id="studentList">
</ul>
<script>
var students = [
{name:"Lina",grade:"F"},
{name:"Fredrik",grade:"D"},
{name:"Sara",grade:"C"},
{name:"Lucia",grade:"B"},
{name:"Hans",grade:"A"},
{name:"Jonathan", grade: "A"}
];
function clickHandler() {
document.getElementById("studentList").innerHTML = "";
students.forEach(function(student) {
if ((student.grade == document.getElementById("grade").value || document.getElementById("grade").value == "") &&
(student.name.toLowerCase() == document.getElementById("studentName").value.toLowerCase() || document.getElementById("studentName").value == "")) {
document.getElementById("studentList").innerHTML += "<li>" + student.name + " (" + student.grade + ")"
}
});
}
document.getElementById("click_me").addEventListener('click',clickHandler);
</script>
</body>
</html>
Javascript
魔方
学生:
var学生=[
{姓名:“丽娜”,年级:“F”},
{姓名:“弗雷德里克”,年级:“D”},
{姓名:“Sara”,年级:“C”},
{姓名:“卢西亚”,成绩:“B”},
{姓名:“汉斯”,成绩:“A”},
{姓名:“乔纳森”,成绩:“A”}
];
函数clickHandler(){
document.getElementById(“学生列表”).innerHTML=“”;
students.forEach(函数(学生){
if((student.grade==document.getElementById(“grade”).value | | document.getElementById(“grade”).value==“”)&&
(student.name.toLowerCase()==document.getElementById(“studentName”).value.toLowerCase()| | document.getElementById(“studentName”).value==“”){
document.getElementById(“学生列表”).innerHTML+=“”+student.name+”(“+student.grade+”)
}
});
}
document.getElementById(“click_me”).addEventListener(“click”,clickHandler);
这个问题没有建设性。你要求我们为你做家庭作业,这里没有太多明显的努力。我上周才开始学习这些东西,似乎花了无穷无尽的时间。我很抱歉,如果这看起来不像“太明显的努力”,但我一直在努力尝试理解这一点。我很抱歉假设你没有在这个项目上付出任何努力。我已经发布了一个解决方案,可以满足您的要求。如果您觉得有用,请将其标记为已接受的答案。谢谢。您的主要问题是,在该元素出现在DOM中之前,您试图将事件处理程序附加到ID为f1的元素。将脚本放在正文的末尾,而不是前面。另外,通常您应该使用document.getElementById()
,而不是假设存在一个具有元素ID的全局变量。我认为这是一个答案,但期望OP播放“找出差异”并没有启用。是的,这确实是解决问题的正确方法。你所做的只是指出显而易见的,而不是纠正它。如果他不能理解这个简单的代码,那么他应该在领先的时候退出。我解释了他问题的根源。听我说,除了代码和解释之外什么都没有的答案在这里是不受欢迎的。