1

Jquery初心者です。30 問以上の多肢選択式クイズを作成したいと考えています。各質問には、4 つのクリック可能な CSS ボタン (ラジオ ボタンではありません) に割り当てられた 4 つのオプションがあります。ユーザーはボタンを 1 つクリックするだけで選択できます。各ボタンは (クリック機能で) スクリプトを起動し、クリックされたボタン (ボタン A など) に応じて、メモリ内の変数にポイントが割り当てられるかどうかに応じて、新しい質問のセットが自動的にページインされます。前のセットを交換します。これは 30 問の質問のバンクの最後まで続き、合計スコアが画面に表示されます (そのときだけ)。同じボタン (A、B、C、D) を CSS で書き換えずに画面全体に表示したままにし、各ボタンに別の正しいスクリプトまたは正しくないスクリプトを再割り当てしたい (たとえば、今回は質問 C が正しい)そして、クリックされた場合、

さまざまな質問を含む 30 の質問バンクを html ファイルにコピーするのは簡単ですが、クリックする正しいボタンに応じて、ボタンを 1 つから別のボタンにコードを切り替えるより洗練された方法が必要です。行。

4

2 に答える 2

0

常に2つの配列を使用できます。1つは正しいコードと正しくないコードを配置し、もう1つは別の2D配列を質問ごとに使用し、回答ごとにコードを含む配列のインデックスを使用します。

特定の質問に到達したら、2D配列のその部分をループして、各回答にコードを添付します。

例えば:

var codeArray = [notCorrect, correct]; // your functions you have defined, that are called when the answer is correct or not correct.
var answerArray = [
  [1, 0, 0, 0],
  [0, 1, 0, 0], 

  // ... etc ...

  [1, 0, 0, 0],
];

$('.button').click (function (event) {
  // get questionNumber and answerNumber
  codeArray[answerArray[questionNumber-1][answerNumber-1]](); // call the function, and mind the 0 indices!
}

編集、詳細:

配列は次のように定義できます。

var myArray = [0, 1, 2, 3, 4, 5];

各「スロット」には任意の値を入れることができます。私の例では、1'sと0'sのみを使用しています。配列内のこれらの番号にアクセスするには、角括弧([])を使用します。

関数を配列に入れることもできます(私の例では、codeArray。次のように無名関数を指定することもできます。

var codeArray = [function () { alert("Not correct"); }, function () { alert("Correct!"); }];

コードの最後の数行は、クリックのクリックハンドラーです.button。ユーザーがクラスのボタンをクリックするとbutton、この関数がトリガーされます。

これが十分に役立つことを願っています。これについて理解できない場合は、JavaScriptの本をいくつか読んで、もう少し知識を深めてください。

于 2012-05-19T10:42:37.017 に答える
0

別の簡単な方法は、JavaScript プロパティをチェックボックスに追加することです...

例えば

element.answer = true;
...
elements.filter(function(cb, index){      return cb.answer === true && cb.checked; });
于 2012-05-19T12:37:57.350 に答える