【问题标题】:Checking an input against a specific array string根据特定的数组字符串检查输入
【发布时间】:2018-03-27 01:51:08
【问题描述】:

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

【问题讨论】:

  • 你为什么发布代码图片而不是 jsfiddle 或 codepen ...
  • 对不起,我在发布这个问题时有点困惑——我的错误。这是链接,虽然我意识到我可能应该把它放在帖子里。 codepen.io/Mr_FudgeMuffins/pen/xWOZwV
  • 只需编辑您的帖子 xD

标签: javascript html arrays button input


【解决方案1】:

根据您的代码,我通过一些更改对其进行了修复。我认为这不是最好的方法。我在这里发布了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("input").value代替innerHTML。

  • 如果您不确定任何结果,请 console.log 或使用 Chrome 开发调试工具检查结果。在 checkCorrect 函数中,你的数组名应该是 answers 而不是 answer。

短版:

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

【讨论】:

    【解决方案2】:

    创建一个对象数组会更简单,每个对象都包含一个问题和一个答案 - 并创建一个函数来生成随机数并返回相应索引处的对象。

    然后您就可以访问所需的一切,而不必担心您是否可以继续访问原始随机选择的数字,或者匹配两个不同数组之间的索引。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-16
      • 2023-04-04
      • 2015-02-08
      • 1970-01-01
      • 1970-01-01
      • 2021-02-25
      • 2016-06-05
      • 1970-01-01
      相关资源
      最近更新 更多