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>
添加回答
舉報