使用数组在javascript中进行多项选择测验

时间:2013-03-09 20:47:05

标签: javascript html

我必须在javascript中创建一个多选状态大写的测验。我有一个包含所有50个状态(stateArray)的数组和一个包含正确顺序的所有50个大写(capitalArray)的数组。
我有一个表格,里面有一个问题“什么是(空白)的资本”,我希望(空白)填充来自stateArray的状态。
然后我有4个单选按钮,我想要一个填充了来自capitalArray的正确答案,另一个填充了来自capitalArray的随机首都。我该怎么做?

我一直在寻找答案的互联网,但我似乎无法找到它。我知道如何编码问题/单选按钮,如果我输入我希望显示在每个旁边的文本,但我不知道如何从数组中提取它。请帮忙。

编辑:好的,也许我问错了。我不希望有人为我做作业。分配还有很多,我只是无法弄清楚如何做到这一部分 - 特别是从数组中提取数据以填充问题和单选按钮。我在教科书或互联网上找不到这些信息。在这一点上我只是感到沮丧和困惑,我不知道该去哪里寻求帮助。如果有人知道我在哪里可以找到关于如何做到这一点的教程或信息,那也会有所帮助。



对于任何标记我的问题的人:如果你打算将其标记下来,如果你发表评论告诉我为什么这样我可以改进我未来的问题,那将是非常有帮助的。谢谢! : - )

1 个答案:

答案 0 :(得分:1)

  

我不知道如何让它从数组中拉出来

对于表格中的每一行,从任何数组中选择一个随机索引(例如状态):

var questionIndex = Math.round(Math.random(stateArray.length));

然后使用获得的问题索引从两个数组中获取值,条件是两者的顺序正确:

var question = stateArray[questionIndex],
    answer = capitalArray[questionIndex];

您现在可以填充行的HTML字段。

修改

要获得单选按钮的“错误”答案,您可以简单地:

var incorrectAnswerIndices = [],
    incorrectAnswerIndex;

while (incorrectAnswerIndices.length < 3) {
    incorrectAnswerIndex = Math.round(Math.random(stateArray.length));
    // Check for collisions with the correct answer,
    // and make sure there are no identical answers:
    if (incorrectAnswerIndex !== questionIndex &&
            incorrectAnswerIndices.indexOf(incorrectAnswerIndex) === -1) {
        incorrectAnswerIndices.push(incorrectAnswerIndex);
    }
}

您现在可以迭代incorrectAnswerIndices数组并使用值创建/填充错误问题单选按钮的值,例如:capitalArray[incorrectAnswerIndices[0]]这是给定状态的三个不正确的大写名称中的第一个。