Jquery使用可点击按钮进行多项选择测验

时间:2012-05-19 10:38:20

标签: jquery

我是Jquery的初学者。 我想创建一个包含30多个问题的多项选择测验。每个问题都有4个选项分配给4个可点击的CSS按钮 - 不是单选按钮。用户只需单击一个按钮即可进行选择。每个按钮都会触发一个脚本(在点击功能中),并且根据点击的按钮,(例如按钮A),一个点或没有点被分配给内存中的变量,然后一组新的问题被自动分页到替换前一套。这将持续到30个问题库的末尾,然后在屏幕上显示总得分(并且仅在那时)。 我希望屏幕上始终显示相同的按钮(A,B,C,D),而不需要重写CSS,但每个按钮都会重新分配不同的正确或不正确的脚本(例如,这次问题C是正确的并且,如果点击,则根据下一组问题以及新银行中答案的正确按钮选择奖励1分。

很容易将30个不同问题的问题复制到html文件中,但必须有更优雅的方法将代码从一个按钮切换到另一个按钮,具体取决于要点击的正确按钮,而不必使用这么多行。

2 个答案:

答案 0 :(得分:0)

你总是可以使用两个数组,一个是你为每个问题输入正确和错误的代码,然后是另一个二维数组,每个答案都是一个带有代码的数组的索引。

当你到达某个问题时,循环遍历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];

您可以在每个“广告位”中添加任何值。在我的示例中,我只使用10。要访问数组中的这些数字,请使用方括号([])。

您还可以将函数放入数组(在我的示例中为codeArray。您甚至可以提供匿名函数,如下所示:

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

最后几行代码是任何.button点击的点击处理程序。如果用户单击类button的按钮,则会触发此功能。

我希望这有足够的帮助,如果您对此不了解,请阅读一些JavaScript书籍,并接受更多教育。

答案 1 :(得分:0)

另一种简单的方法是将javascript属性添加到复选框...

e.g。

element.answer = true;
...
elements.filter(function(cb, index){      return cb.answer === true && cb.checked; });