gpt4 book ai didi

javascript - 使用 .each() 两次

转载 作者:行者123 更新时间:2023-11-30 10:36:38 27 4
gpt4 key购买 nike

我使用这个脚本创建一个随机数序列,使用数组的值,并将这些数字应用到两个 div 列表中

var shuffle = function(v) {
for (var j, x, i = v.length; i; j = parseInt(Math.random() * i), x = v[--i], v[i] = v[j], v[j] = x);
return v;
};

var randorder = shuffle([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);
var index = 0;

$('.Questions').each(function() {
$(this).addClass('question' + (randorder[index++]));
});

$('.answers').each(function() {
$(this).addClass('answer' + (randorder[index++]));
});

问题是脚本正在返回类回答结果“answerundefined”。

请记住,两个集合必须具有相同的顺序,以匹配问题和答案。

谢谢

最佳答案

这很难说,因为我不知道你有多少 .Questions.answers,但是当你看到 undefined 时,这意味着您超出了 randomer 数组的范围。因此,您至少需要在循环之间将索引设置回零:

var index = 0;

$('.Questions').each(function() {
$(this).addClass('question' + (randorder[index++]));
});
index = 0;
$('.answers').each(function() {
$(this).addClass('answer' + (randorder[index++]));
});

您需要将索引设置回 0 的原因是,当您完成对 .Questions 的循环时,索引的值为 20。因此,当您对 进行循环时.answers,索引从 20 变为 39。你想要 0-19,所以你需要重置它。

此外,您可能想检查您是否仍在边界内:

var randcount = randorder.length;
$('.Questions').each(function() {
if (randcount > index) {
$(this).addClass('question' + (randorder[index++]));
}
});

关于javascript - 使用 .each() 两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13649887/

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