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

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

本文关键字:更新 属性 对象 代码 帮助 数组 Javascript HTML 选择 使用 回复      更新时间:2023-09-26

我正在尝试分析某人的代码行,以便对其进行逆向工程。但是我目前被难住了...

请查看以下链接中的代码:

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 开始(,但我不明白使用 checked.property 的 if 条件

任何帮助将不胜感激!

你走上了正轨——它得到了当前问题的correctAnswer——即。"2"表示第一个问题,表示数组中的第三个选项(因为 0,始终是数组中的第一个位置(

如果您查看 HTML,则第三个单选按钮的 ID choice3,因此脚本递增以确定是否打孔了正确的单选按钮(.checked返回真/假(,如果是,那么他们是正确的,所以分数提高了!

更好的初始设计可能是:

<h3 id="questionHeader"></h3>
<input type="radio" name="choice" value="0" id="choice0">
<label id="answersw0"></label>
<br>
<input type="radio" name="choice" value="1" id="choice1">
<label id="answersw1"></label>
<br>
<input type="radio" name="choice" value="2" id="choice2">
<label id="answersw2"></label>
<br>
<button id="next">Next</button>

防止 javascript 中出现额外的步骤,并匹配表单值和数组位置。

它添加一个是因为 id 不是以 0 开头,而是以 1 开头:选择 1、选择 2、选择3。

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