检查学生是否在正确的 class 中,并且只显示在按下的 class 中的学生
Check if student is in right class and only show students that goes in the class that is pressed
我有一个作业,其中布置了一个显示单选按钮的 html 脚本,说出每个 class 的名称,以及一个列出所有学生的 json 文件名字以及他们去的 class。
我想知道有没有办法使用 addEventListener 来做到这一点?因为这就是我听说的正确的解决方案,我必须按照教授说的做。
不允许我更改 HTML 代码。
fetch("studenter.json")
.then((response) => {
return response.json();
})
.then(function appendData(data) {
var unordered = document.querySelector(".studenter");
for (var i = 0; i < data.length; i++) {
var li = document.createElement("li");
li.innerHTML = 'Name: ' + data[i].fornavn + ' ' + data[i].etternavn;
unordered.appendChild(li);
}
});
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Studenter i IIKG1002 og IDG1011</title>
<script defer src="js/studenterIKlasse.js"></script>
<link rel="stylesheet" href="css/studenterIKlasse.css" />
</head>
<body>
<h1>Studenter i IIKG1002 og IDG1011</h1>
<p>Velg klasse</p>
<div class="klasseVelger">
<div>
<input type="radio" name="programvelger" id="BIGEOMAT" />
<label for="BIGEOMAT">Bachelor in Engineering, Geomatics</label>
</div>
<div>
<input type="radio" name="programvelger" id="BWU" />
<label for="BWU">Bachelor in Web Development</label>
</div>
<div>
<input type="radio" name="programvelger" id="ÅRWEB" />
<label for="ÅRWEB">Web Design - One-year programme</label>
</div>
<div>
<input type="radio" name="programvelger" id="BIXD" />
<label for="BIXD">Interaction Design - Bachelor's Programme</label>
</div>
<div>
<input type="radio" name="programvelger" id="all" />
<label for="all">Show all</label>
</div>
</div>
<p>
<ul class="studenter"></ul>
</p>
</body>
</html>
这是我要显示的 json 的示例:
{
"fornavn": "Marcus Gimse",
"etternavn": "Blikstad",
"studieprogram": "Bachelor in Engineering, Geomatics",
"forkortelse": "BIGEOMAT"
},
当然
你快到了
注意:我将数据重命名为学生
// fetch here and keep the data - uncomment the next 4 lines when ready
// let students = [];
// fetch("studenter.json")
// .then(response => response.json())
// .then(data => students = data);
// example data. Remove when doing fetch
const students = [{ "fornavn": "Marcus Gimse", "etternavn": "Blikstad", "studieprogram": "Bachelor in Engineering, Geomatics", "forkortelse": "BIGEOMAT"}];
// using delegation - i.e. a click on anything in klasseVelger will give the target in event.target
document.querySelector(".klasseVelger").addEventListener("click", function(e) {
const tgt = e.target;
if (tgt.type && tgt.type === "radio") {
const id = tgt.id;
console.log(id); // can be removed
var unordered = document.querySelector(".studenter");
unordered.innerHTML = ""; // reset
for (var i = 0; i < students.length; i++) {
if (id === "all" || id === students[i].forkortelse) {
var li = document.createElement("li");
li.innerHTML = 'Name: ' + students[i].fornavn + ' ' + students[i].etternavn;
unordered.appendChild(li);
}
}
}
})
<h1>Studenter i IIKG1002 og IDG1011</h1>
<p>Velg klasse</p>
<div class="klasseVelger">
<div>
<input type="radio" name="programvelger" id="BIGEOMAT" />
<label for="BIGEOMAT">Bachelor in Engineering, Geomatics</label>
</div>
<div>
<input type="radio" name="programvelger" id="BWU" />
<label for="BWU">Bachelor in Web Development</label>
</div>
<div>
<input type="radio" name="programvelger" id="ÅRWEB" />
<label for="ÅRWEB">Web Design - One-year programme</label>
</div>
<div>
<input type="radio" name="programvelger" id="BIXD" />
<label for="BIXD">Interaction Design - Bachelor's Programme</label>
</div>
<div>
<input type="radio" name="programvelger" id="all" />
<label for="all">Show all</label>
</div>
</div>
<p>
<ul class="studenter"></ul>
</p>
我有一个作业,其中布置了一个显示单选按钮的 html 脚本,说出每个 class 的名称,以及一个列出所有学生的 json 文件名字以及他们去的 class。
我想知道有没有办法使用 addEventListener 来做到这一点?因为这就是我听说的正确的解决方案,我必须按照教授说的做。
不允许我更改 HTML 代码。
fetch("studenter.json")
.then((response) => {
return response.json();
})
.then(function appendData(data) {
var unordered = document.querySelector(".studenter");
for (var i = 0; i < data.length; i++) {
var li = document.createElement("li");
li.innerHTML = 'Name: ' + data[i].fornavn + ' ' + data[i].etternavn;
unordered.appendChild(li);
}
});
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Studenter i IIKG1002 og IDG1011</title>
<script defer src="js/studenterIKlasse.js"></script>
<link rel="stylesheet" href="css/studenterIKlasse.css" />
</head>
<body>
<h1>Studenter i IIKG1002 og IDG1011</h1>
<p>Velg klasse</p>
<div class="klasseVelger">
<div>
<input type="radio" name="programvelger" id="BIGEOMAT" />
<label for="BIGEOMAT">Bachelor in Engineering, Geomatics</label>
</div>
<div>
<input type="radio" name="programvelger" id="BWU" />
<label for="BWU">Bachelor in Web Development</label>
</div>
<div>
<input type="radio" name="programvelger" id="ÅRWEB" />
<label for="ÅRWEB">Web Design - One-year programme</label>
</div>
<div>
<input type="radio" name="programvelger" id="BIXD" />
<label for="BIXD">Interaction Design - Bachelor's Programme</label>
</div>
<div>
<input type="radio" name="programvelger" id="all" />
<label for="all">Show all</label>
</div>
</div>
<p>
<ul class="studenter"></ul>
</p>
</body>
</html>
这是我要显示的 json 的示例:
{
"fornavn": "Marcus Gimse",
"etternavn": "Blikstad",
"studieprogram": "Bachelor in Engineering, Geomatics",
"forkortelse": "BIGEOMAT"
},
当然
你快到了
注意:我将数据重命名为学生
// fetch here and keep the data - uncomment the next 4 lines when ready
// let students = [];
// fetch("studenter.json")
// .then(response => response.json())
// .then(data => students = data);
// example data. Remove when doing fetch
const students = [{ "fornavn": "Marcus Gimse", "etternavn": "Blikstad", "studieprogram": "Bachelor in Engineering, Geomatics", "forkortelse": "BIGEOMAT"}];
// using delegation - i.e. a click on anything in klasseVelger will give the target in event.target
document.querySelector(".klasseVelger").addEventListener("click", function(e) {
const tgt = e.target;
if (tgt.type && tgt.type === "radio") {
const id = tgt.id;
console.log(id); // can be removed
var unordered = document.querySelector(".studenter");
unordered.innerHTML = ""; // reset
for (var i = 0; i < students.length; i++) {
if (id === "all" || id === students[i].forkortelse) {
var li = document.createElement("li");
li.innerHTML = 'Name: ' + students[i].fornavn + ' ' + students[i].etternavn;
unordered.appendChild(li);
}
}
}
})
<h1>Studenter i IIKG1002 og IDG1011</h1>
<p>Velg klasse</p>
<div class="klasseVelger">
<div>
<input type="radio" name="programvelger" id="BIGEOMAT" />
<label for="BIGEOMAT">Bachelor in Engineering, Geomatics</label>
</div>
<div>
<input type="radio" name="programvelger" id="BWU" />
<label for="BWU">Bachelor in Web Development</label>
</div>
<div>
<input type="radio" name="programvelger" id="ÅRWEB" />
<label for="ÅRWEB">Web Design - One-year programme</label>
</div>
<div>
<input type="radio" name="programvelger" id="BIXD" />
<label for="BIXD">Interaction Design - Bachelor's Programme</label>
</div>
<div>
<input type="radio" name="programvelger" id="all" />
<label for="all">Show all</label>
</div>
</div>
<p>
<ul class="studenter"></ul>
</p>