1

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

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

4

2 回答 2

0

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

例如

element.answer = true;
...
elements.filter(function(cb, index){      return cb.answer === true && cb.checked; });
于 2012-05-19T12:37:57.350 回答
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];

您可以在每个“插槽”中放置任何值。在我的示例中,我只使用1's 和0's。要访问数组中的这些数字,请使用方括号 ( [])。

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

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

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

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

于 2012-05-19T10:42:37.017 回答