[英]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.