检查特定数组字符串的输入

时间:2018-03-27 01:51:08

标签: javascript html arrays button input

我正在尝试创建一个测验,该测验从数组中的问题池中随机选择一个问题,该问题在输入框中回答,该输入框将根据数组中相应的答案字符串进行检查。我用过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!";
        }
};

Codepen Link

An image of the code

2 个答案:

答案 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!";
            }
};