我是Jquery的初学者。 我想创建一个包含30多个问题的多项选择测验。每个问题都有4个选项分配给4个可点击的CSS按钮 - 不是单选按钮。用户只需单击一个按钮即可进行选择。每个按钮都会触发一个脚本(在点击功能中),并且根据点击的按钮,(例如按钮A),一个点或没有点被分配给内存中的变量,然后一组新的问题被自动分页到替换前一套。这将持续到30个问题库的末尾,然后在屏幕上显示总得分(并且仅在那时)。 我希望屏幕上始终显示相同的按钮(A,B,C,D),而不需要重写CSS,但每个按钮都会重新分配不同的正确或不正确的脚本(例如,这次问题C是正确的并且,如果点击,则根据下一组问题以及新银行中答案的正确按钮选择奖励1分。
很容易将30个不同问题的问题复制到html文件中,但必须有更优雅的方法将代码从一个按钮切换到另一个按钮,具体取决于要点击的正确按钮,而不必使用这么多行。
答案 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];
您可以在每个“广告位”中添加任何值。在我的示例中,我只使用1
和0
。要访问数组中的这些数字,请使用方括号([]
)。
您还可以将函数放入数组(在我的示例中为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; });