繁体   English   中英

使用HTML + Javascript进行多项选择测验:重新:使用数组对象和属性更新分数(帮助分析代码)

[英]Multiple choice quiz using HTML + Javascript: re: updating the score using array objects and properties (Help analyzing code)

我试图分析某人的代码行,以便对它进行反向工程。 但是我目前很困惑...

请通过以下链接查看代码:

http://jsfiddle.net/alxers/v9t4t/

^我被困在第4个职能部门...

function updateScore() {
    var rightAnswer = allQuestions[questionCount].correctAnswer;
    var chosenAnswer = document.getElementById("choice" + (rightAnswer + 1));
    if (chosenAnswer.checked) {
        score++;
    }
}

我知道'var rightAnswer'行在做什么...它是从allQuestions数组中检索适用的对象。 然后从该对象访问correctAnswer属性。 每次执行此功能时,rightAnswer的值都应为2,然后为1,然后为0,我认为呢?

这是我感到困惑的地方-rightAnswer的值随后在代码的下一行中使用,该代码将document.getElementById分配给变量selectedAnswer。

但是代码向rightAnswer加1,因此将要检索的HTML元素将为“ choice3”,“ choice2”和“ choice0”?

我认为该代码将尝试检索用户选择的任何答案/无线电气泡的元素,对吗?

我想我不明白这一点...

而且我猜想我不明白下一行代码的作用-我知道分数将添加1(从0开始),但是我不理解if-conditional,它使用被检查的财产

任何帮助将不胜感激!

之所以加上1,是因为ID的开头不是0,而是1:choice1,choice2,choice3。

如果有条件,则检查是否选择了chosenAnswer ,它在html中获取了正确答案的ID(即选中了该单选按钮)。 如果选择了正确答案,则分数会增加。

您是对的,它可以解决当前问题的正确correctAnswer ,即。 第一个问题为'2',表示数组中的第三个选项(因为0,始终是数组中的第一个位置)

如果您查看HTML,则第三个单选按钮的ID为choice3因此脚本将递增以确定是否已打入正确的单选按钮( .checked返回true / false),如果是,则它们是正确的,因此比分提高了!

更好的初始设计可能是:

<h3 id="questionHeader"></h3>

<input type="radio" name="choice" value="0" id="choice0">
<label id="answ0"></label>
<br>
<input type="radio" name="choice" value="1" id="choice1">
<label id="answ1"></label>
<br>
<input type="radio" name="choice" value="2" id="choice2">
<label id="answ2"></label>
<br>
<button id="next">Next</button>

为了防止在javascript中执行多余的步骤,并同时匹配表单值和数组位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM