3 回答
TA贡献1873条经验 获得超9个赞
我认为你的 If 语句应该看起来像这样
if(answer == allQuestions[q].choices[allQuestions[q].correctAnswer]) { alert("correct"); }
编辑了这个,刚刚尝试并为我工作
TA贡献1909条经验 获得超7个赞
您还可以使用数组中元素的索引进行比较。
if(allQuestions[q].choices.indexOf(answer) == allQuestions[q].correctAnswer) {
alert("correct");
}
TA贡献1815条经验 获得超10个赞
因为我做到了...
const allQuestions =
[ { question : 'Where is Helsinki?'
, choices : [ 'Sweden', 'Finland', 'Us' ]
, correctAnswer: 1
}
, { question : 'Where is Stockholm?'
, choices : [ 'Norway', 'Iceland', 'Sweden' ]
, correctAnswer: 2
}
, { question : 'Where is Köpenhamn?'
, choices : [ 'Denmark', 'Sweden', 'Norway' ]
, correctAnswer: 0
}
]
function* qList(arr) { for (let q of arr) yield q }
const libQuestion = document.querySelector('h1')
, formReplies = document.getElementById('list')
, btNext = document.querySelector('button')
, DomParser = new DOMParser()
, qListRead = qList( allQuestions )
, score = { correct: 0, count:0 }
;
var currentAnswer = ''
;
function setNewQuestion()
{
formReplies.innerHTML = ''
let newQuestion = qListRead.next()
if (!newQuestion.done)
{
libQuestion.textContent = newQuestion.value.question
currentAnswer = newQuestion.value.correctAnswer
++score.count
newQuestion.value.choices.forEach((choice,indx)=>
{
let line = `<label><input type="radio" name="answer" value="${indx}">${ choice}</label>`
, inLn = (DomParser.parseFromString( line, 'text/html')).body.firstChild
;
formReplies.appendChild(inLn)
})
}
else
{
libQuestion.textContent = ` Score = ${score.correct} / ${score.count}`
btNext.disabled = true
}
}
setNewQuestion()
btNext.onclick=()=>
{
if (formReplies.answer.value)
{
score.correct += ( currentAnswer == formReplies.answer.value )
setNewQuestion()
}
}
<h1></h1>
<p></p>
<form id="list"></form>
<br>
<button>next</button>
添加回答
举报