我正在尝试创建一个测验,该测验从数组中的问题池中随机选择一个问题,该问题在输入框中回答,该输入框将根据数组中相应的答案字符串进行检查。我用过math.floor(math.random()*);得到我的随机数。该随机数旨在用于找到问题和答案,它们被安排以便彼此对应,例如, ['question1','question2']和['answer1','answer2']。
我很难尝试根据数组中相应的答案值正确检查我的输入。我是Javascript的新手,所以我不知道如何做到这一点。我尝试使用document.getElementById命令来比较这两者。我怀疑它与ansNum没有得到questNum值的事实有关,因为questNum只在generateQuiz函数中给出了它的值。 (我意识到ansNum可能是多余的,但我只是在玩,看看是否会发生任何事情)
使用Javascript:
const questions = ['What do young Roman males wear?','Who is the Roman god of the smith?','Who is the 6th king of Rome?'];
const answers = ['toga praetexta','vulcan','servius tullius'];
function getQuestNum() {
questNum = Math.floor(Math.random() * 3);
};
function getAnsNum() {
ansNum = questNum();
}
function generateQuiz() {
getQuestNum();
document.getElementById("question").innerHTML = questions[questNum];
};
function checkCorrect() {
getAnsNum();
if (answer[ansNum] = document.getElementById("input").innerHTML) {
document.getElementById("verification").innerHTML = "Correct!";
}
};
答案 0 :(得分:0)
创建一个对象数组会更简单,每个对象都包含一个问题和一个答案 - 并创建一个生成随机数并在相应索引处返回对象的函数。
然后,您可以访问所需的一切,而无需担心您是否可以保持对原始随机选择的数字的访问权限,或者匹配两个不同数组之间的索引。
答案 1 :(得分:0)
根据您的代码,我修改了一些更改。我认为这不是最好的方法。我在这里发布了js部分。
const questions = ['What do young Roman males wear?','Who is the Roman god of the smith?','Who is the 6th king of Rome?'];
const answers = ['toga praetexta','vulcan','servius tullius'];
var questNum;
function getQuestNum() {
questNum = Math.floor(Math.random() * 3);
};
function getAnsNum() {
ansNum = questNum;
}
function generateQuiz() {
getQuestNum();
document.getElementById("question").innerHTML = questions[questNum];
};
function checkCorrect() {
getAnsNum();
if (answers[ansNum] = document.getElementById("input").value) {
document.getElementById("verification").innerHTML = "Correct!";
}
};
首先,您需要一个全局变量questNum,然后您可以在所有函数中使用它。
函数getAnsNum()是多余的,至少我认为是这样,只需在checkCorrect()函数中使用questNum。
对于getElementByID函数,请在输入中插入ID属性
<input id="input" type="text" name="input">
对于输入,如果要获取输入字段的值,请使用document.getElementById(&#34; input&#34;)。value而不是innerHTML。
如果您不确定任何结果,请使用console.log或使用Chrome开发调试工具检查结果。在checkCorrect函数中,您的数组名称应该是答案而不是答案。
更短的版本:
const questions = ['What do young Roman males wear?','Who is the Roman god of the smith?','Who is the 6th king of Rome?'];
const answers = ['toga praetexta','vulcan','servius tullius'];
var questNum;
function getQuestNum() {
questNum = Math.floor(Math.random() * 3);
};
function generateQuiz() {
getQuestNum();
document.getElementById("question").innerHTML = questions[questNum];
};
function checkCorrect() {
if (answers[questNum] = document.getElementById("input").value) {
document.getElementById("verification").innerHTML = "Correct!";
}
};