さて、私はリビジョンのために質問のリストからランダムな質問をし、ユーザーが質問に答えたときにテキスト入力を受け取り、それを実際の答えと比較するためのクイズアプリケーションを作成しようとしています。質問。私が使用しているコードは次のとおりです。Math.random()を使用するテキスト入力値と変数値を保存して再利用するにはどうすればよいですか?
var keyList = Object.keys(htmlModule);
var ranPropName = keyList[ Math.floor(Math.random()*keyList.length) ];
var pageStart = function() {
document.getElementById("question").innerHTML = htmlModule[ranPropName][0];
document.getElementById("submit").onclick = answerValidation;
};
window.onload = pageStart;
var answerValidation = function(correctAnswer, userAnswer) {
correctAnswer = htmlModule[ranPropName][1];
userAnswer = document.getElementById("submit").value;;
if(userAnswer === correctAnswer) {
document.getElementById("rightWrong").style.backgroundColor = "green";
} else {
document.getElementById("rightWrong").style.backgroundColor = "red";
}
};
変数htmlModule
質問とその回答が保存されているオブジェクトを参照します。各質問と回答のペアは、そのプロパティの値である配列内に格納されます。プロパティは単に各ペアを参照するためのキーです。 htmlQ1、htmlQ2など
実際の回答とユーザーの回答を比較したif
の文は、true
と評価されません。私はこれを知っているdiv要素の背景色rightWrong
は、私が間違いなく正解を入力したときでさえ、赤色に変わるだけなので、緑色に変わるはずです。テキスト入力が何らかの理由で格納されていないか、またはMath.method()
の使用のためにMath.random()
を使用する変数ranPropName
の値が変更されていると想定されていますが、いずれかの問題を解決する方法が固まっています。すべての返信をお寄せいただきありがとうございます。
いくつかの 'console.log'トラブルシューティングを行います。私は、 'userAnswer'がどのようなものに設定されているかを知ることは有益だろうと思います。 – Santi
とにかくそれらを上書きする場合は、これらの2つの変数をパラメータとして持つことは意味がありません。パラメータリストからそれらを削除し、関数内に2つの 'var'を使用するだけです。 – Bergi
'console.log(userAnswer、correctAnswer、typeof correctAnswer)'を追加し、出力を表示してください。そして 'htmlModule'の例を与えてください。 – Bergi