![](/img/trans.png)
[英]Uncaught ReferenceError ReferenceError: Matter is not defined
[英]Uncaught ReferenceError ReferenceError: question is not defined
我正在尝试为学校项目制作一个问答游戏,但它没有执行 function(比如显示答案选项)。 我得到了“Uncaught ReferenceError ReferenceError: question is not defined”。
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Spēle</title>
<style>
.box{
max-width: 18rem;
text-align: center;
border: 2px solid black;
border-radius: 8px;
padding: 8px;
display: flex;
flex-direction: column;
justify-content: center;
}
</style>
</head>
<body>
<div class="container">
<div class="container box">
Spēle, "Kā sauc šo pilsētu?"
<hr>
<div id="question-title">
Question title
</div>
<div id="option-list">
<input type="radio" id="0" name="0"> option value</input>
</div>
<div id="score-area">
Score Area
</div><button id="submit">Iesniegt!</button><br>
<button id="start">Sākt!</button><br>
<button id="play-again">Spēlēt vēlreiz!</button>
</div><!-- Database-->
<script src="script.js"></script>
<script>
// definē variantus:
let questionNo = 0;
let score = 0;
let question_title = document.getElementById(question-title);
let option_list = document.getElementById(option-list);
let score_area = document.getElementById(score-area);
let btn_submit = document.getElementById(submit);
let start = document.getElementById(start);
let play_again = document.getElementById(play-again);
// paslepjam dažas lietas
hideItems(question_title);
hideItems(options_list);
hideItems(btn_submit);
hideItems(play_agian);
hideItems(score_area);
// Starta poga uz klikšķa
start.addEventListener('click', function () {
show(question_title);
show(option_list);
show(btn_submit);
loadQuestions();
hideItems(start);
});
function loadQuestions() {
// parbaudi vai ir jautājami jautājumi
if (questionNo < data.lengt) {
let q = data[questionNo].qs;
let optionsArray = data[questionNo].options;
// Parādīt jautājumus:
question_title.innerText = q;
// Parādīt opcijas:
option_list.innerText = "";
for (let i =0; i < 4; i++) {
option_list.innerHTML = options_list.innerHTML +
`
<input type="radio" id="${i}" name="${question_title}">${optionsArray[i]}</input>
`;
}
}else{
console.log("no more question")
show(score_area);
score_area.innerText = "Pareizās atbildes: " + score;
hideItems(btn_submit);
show(play_again);
}
}
play_again.addEventListener("click", function() {
location.reload();
})
btn_submit.addEventListener('click', function () {
let id = getCheckedId();
try {
if (id == data[questionNo].answerId) {
score++;
console.log("correct answer")
}
} catch (error) {
}
questionNo++;
loadQuestions();
})
function getCheckedId() {
for (let i = 0; i < 4; i++) {
if (document.getElementById(i).checked)
console.log("you selected:"+ i)
return i;
}}
function hideItems(element) {
element.style.display = "none";
}
function showItems(element) {
element.style.display = "block";
}
</script>
</div>
</body>
</html>
脚本.js
var data= [
{
"qs": "1. Pilsēta",
"options": [
"Rīga",
"Kuldīga",
"Jēkabpils",
"Talsi"
],
"answerId": 2
},
{
"qs": "2. Pilsēta",
"options": [
"Ogre",
"Liepāja",
"Snēpele",
"Daugavpils"
],
"answerId": 1
},
{
"qs": "3. Pilsēta",
"options": [
"Tukums",
"Grobiņa",
"Cēsis",
"Priekule"
],
"answerId": 4
},
{
"qs": "4. Pilsēta",
"options": [
"Basi",
"Ezere",
"Saldus",
"Turlava"
],
"answerId": 3
},
{
"qs": "5. Pilsēta",
"options": [
"Kandava",
"Valmiera",
"Rūjiena",
"Krāslava"
],
}
]
我试图用图像制作一个问答游戏(对于图像中的“城市叫什么”之类的城市,有四个选项,其中一个是正确的城市。)但有点失败,因为它没有做它的事情而且我是初学者在编码。 它应该显示一个城市的图片,你必须检查正确答案。 提交答案后,您会收到另一个问题,依此类推,直到您回答完所有问题,它会显示您的分数,并为您提供“再次玩”的选项。
我认为您应该在参数中使用引号 ""
let question_title = document.getElementById("question-title");
let option_list = document.getElementById("option-list");
let score_area = document.getElementById("score-area");
let btn_submit = document.getElementById("submit");
let start = document.getElementById("start");
let play_again = document.getElementById("play-again");
因此它可以将该值识别为字符串并使用其 ID 查找元素,因为没有引号“”,它试图找到一个不存在的名为question的变量,因此返回一个错误,指出该变量未定义.
此外,它不会尝试查找名为question-title的变量,因为减号-对于变量名称无效。
您将 function 定义为showItems()
function showItems(element) {
element.style.display = "block";
}
但你总是称它为show()
show(question_title);
show(option_list);
show(btn_submit);
你应该使用showItems()调用它
showItems(question_title);
showItems(option_list);
showItems(btn_submit);
您应该删除这些行中的 s
hideItems(options_list);
option_list.innerHTML = options_list.innerHTML +
`
<input type="radio" id="${i}" name="${question_title}">${optionsArray[i]}</input>
`;
你应该写对
hideItems(play_agian);
你应该写对
if (questionNo < data.lengt)
所以你应该把它写在脚本的开头,这样当你调用时程序知道它是什么以及它是如何工作的
<script>
function getCheckedId() {
for (let i = 0; i < 4; i++) {
if (document.getElementById(i).checked)
console.log("you selected:"+ i)
return i;
}}
function hideItems(element) {
element.style.display = "none";
}
function showItems(element) {
element.style.display = "block";
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Spēle</title>
<style>
.box{
max-width: 18rem;
text-align: center;
border: 2px solid black;
border-radius: 8px;
padding: 8px;
display: flex;
flex-direction: column;
justify-content: center;
}
</style>
</head>
<body>
<div class="container">
<div class="container box">
Spēle, "Kā sauc šo pilsētu?"
<hr>
<div id="question-title">
Question title
</div>
<div id="option-list">
<input type="radio" id="0" name="0"> option value</input>
</div>
<div id="score-area">
Score Area
</div><button id="submit">Iesniegt!</button><br>
<button id="start">Sākt!</button><br>
<button id="play-again">Spēlēt vēlreiz!</button>
</div><!-- Database-->
<script src="script.js"></script>
<script>
// Functions needs to go before using them
function getCheckedId() {
for (let i = 0; i < 4; i++) {
if (document.getElementById(i).checked)
console.log("you selected:"+ i)
return i;
}}
function hideItems(element) {
element.style.display = "none";
}
function showItems(element) {
element.style.display = "block";
}
// definē variantus:
let questionNo = 0;
let score = 0;
let question_title = document.getElementById("question-title");
let option_list = document.getElementById("option-list");
let score_area = document.getElementById("score-area");
let btn_submit = document.getElementById("submit");
let start = document.getElementById("start");
let play_again = document.getElementById("play-again");
// paslepjam dažas lietas
hideItems(question_title);
hideItems(option_list);
hideItems(btn_submit);
hideItems(play_again);
hideItems(score_area);
// Starta poga uz klikšķa
start.addEventListener('click', function () {
showItems(question_title);
showItems(option_list);
showItems(btn_submit);
loadQuestions();
hideItems(start);
});
function loadQuestions() {
// parbaudi vai ir jautājami jautājumi
if (questionNo < data.length) {
let q = data[questionNo].qs;
let optionsArray = data[questionNo].options;
// Parādīt jautājumus:
question_title.innerText = q;
// Parādīt opcijas:
option_list.innerText = "";
for (let i =0; i < 4; i++) {
option_list.innerHTML = option_list.innerHTML +
`
<input type="radio" id="${i}" name="${question_title}">${optionsArray[i]}</input>
`;
}
}else{
console.log("no more question")
showItems(score_area);
score_area.innerText = "Pareizās atbildes: " + score;
hideItems(btn_submit);
showItems(play_again);
}
}
play_again.addEventListener("click", function() {
location.reload();
})
btn_submit.addEventListener('click', function () {
let id = getCheckedId();
try {
if (id == data[questionNo].answerId) {
score++;
console.log("correct answer")
}
} catch (error) {
}
questionNo++;
loadQuestions();
})
</script>
</div>
</body>
</html>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.