gpt4 book ai didi

javascript - 随机化页面中列表项的顺序时缺少元素

转载 作者:行者123 更新时间:2023-11-30 11:55:46 25 4
gpt4 key购买 nike

我正在尝试为一个教育网站开发一个小测试,我想随机排列问题和练习的顺序,然后使用一组单选按钮逐个排列每个问题下的答案顺序。我已经尝试了我在两个不同的问题(即 this onethis one )中找到的代码,尽管这两个答案实际上是相同的。我正在使用的代码在某种程度上做了我想要的,但有时我的部分测试会丢失(大多数时候我得到 5 个问题和 2-3 个练习,而不是 6 个和 4 个)。我该如何纠正这个问题?此 JSFiddle 中的完整代码示例(后端有一些不相关的东西,忽略它们 - 内容是占位符,使调试更容易),以及下面的 javascript/jQuery 代码:

$(document).ready(function () {
var questions = $('.question');
for (var i = 0; i < questions.length; i++) {
var target = Math.floor(Math.random() * questions.length - 1) + 1;
var target2 = Math.floor(Math.random() * questions.length - 1) + 1;
questions.eq(target).before(questions.eq(target2));
}

var exercises = $(".exercise");
for (var j = 0; j < exercises.length; j++) {
var target = Math.floor(Math.random() * exercises.length - 1) + 1;
var target2 = Math.floor(Math.random() * exercises.length - 1) + 1;
exercises.eq(target).before(exercises.eq(target2));
}
});

附言#1:网站的后端是用 Asp.Net 和 C# 构建的,如果这与问题有关。

附言#2:运行 fiddle 四到五次并计算问题和练习的数量以重现问题。

最佳答案

我更改了您的代码,使 targettarget2 不同:

JavaScript

var questions = $('.question');
for (var i = 0; i < questions.length; i++) {
var target = Math.floor(Math.random() * questions.length - 1) + 1;
var target2 = target;
while(target2 === target) {
target2 = Math.floor(Math.random() * questions.length - 1) + 1;
}
questions.eq(target).before(questions.eq(target2));
}

var exercises = $(".exercise");
for (var j = 0; j < exercises.length; j++) {
var target = Math.floor(Math.random() * exercises.length - 1) + 1;
var target2 = target;
while(target2 === target) {
target2 = Math.floor(Math.random() * exercises.length - 1) + 1;
}
exercises.eq(target).before(exercises.eq(target2));
}

fiddle

关于javascript - 随机化页面中列表项的顺序时缺少元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38052158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com