在 jquery 中随机化测验/抽认卡的顺序
Posted
技术标签:
【中文标题】在 jquery 中随机化测验/抽认卡的顺序【英文标题】:Randomize order of quiz/flashcards in jquery 【发布时间】:2014-10-07 21:09:43 【问题描述】:我有以下问题 我有一个抽认卡测验的代码,但我需要它来洗牌。 我认为最好的解决方案是在下一个按钮功能中进行更改。 函数代码如下:
C.prototype.next = function ()
var that = this;
var $next = this.$current.next();
if (!$next.length)
return;
setTimeout(function ()
that.setCurrent($next, 'h5p-previous');
if (!that.$current.next().length)
that.$nextButton.addClass('h5p-hidden');
that.$prevButton.removeClass('h5p-hidden');
that.setProgress();
, 10);
;
所以我需要更改以随机选择下一个问题。重要的是这样的测验有很多问题,如果再次显示问题是不好的,所以简单的随机化是行不通的。我试图用一个数组来解决它并选择一个随机元素并在 for 循环中删除它,但我不做 jquery 这就是问题所在。所以希望能得到你的帮助。
如果我写了代码,我可以自己做,但这样我就不会感到不安。我也联系了代码的所有者,但代码很旧,他没有回答,我想他不再活跃了。
如果它在下一个按钮功能中不可行,我可以发布完整的代码。 提前致谢。 对不起我的英语不好。
【问题讨论】:
你能做个小提琴吗? jsfiddle.net/oL978pfa 不能给你 html 代码,因为它安装在 joomla 中,但这里有一个链接 kanjilearn.net/index.php/n5 您可以向H5P.Flashcards 添加功能请求。我们中可能会有更多人想要这个功能。 【参考方案1】:使用您的随机函数生成排列而不是选择随机元素。
在所有元素的 for 循环中,将当前元素与数组中的随机其他元素交换。 如果你只需要 40 个问题中的 10 个,你可以只取前 10 个元素。
据我所知,这与您的随机函数一样随机。
我的小提琴:http://jsfiddle.net/gncuvrsx/
function randomIntFromInterval(min, max)
return Math.floor(Math.random() * (max - min + 1) + min);
var things = [
"some string", [1, 2, 3], -5,
foo: 'bar'
,
3.1415, 42];
alert(things);
var random = JSON.parse(JSON.stringify(things));
var L = random.length;
for (var i = 0; i < L; i++)
var j = randomIntFromInterval(0, L - 1);
var b = random[j];
random[j] = random[i];
random[i] = b;
alert(random);
【讨论】:
感谢您的详细回答,但编写代码来选择随机元素不是问题。可能我解释的不是很好。问题是我不知道在代码中“安装”随机选择器的位置。 可能是我太懒了,只看关键词。但我会将选择下一个项目和随机化问题顺序的担忧分开。所以我会在代码中找到一个更早的地方来进行随机化。您不必修改您无法控制的代码。以上是关于在 jquery 中随机化测验/抽认卡的顺序的主要内容,如果未能解决你的问题,请参考以下文章
在“抽认卡”中显示来自 iOS 中 Firebase 的数据