javascript:选择随机项目(只要它尚未显示)

标签 javascript jquery class random

我有一张个人资料图片,想要在单击时更改。我已经创建了一些类来根据应用的类来更改此元素的背景图像,但我不确定如何进行比较。

我知道如何创建类数组以及如何选择随机类,我只是不知道如何判断刚刚选择的随机类是否也是已应用的类。

var classes = ['first', 'second', 'third', 'fourth', 'fifth'];
var randPick = Math.floor(Math.random()*classes.length);
var currentClass = $(this).attr('class');
$(this).removeClass(currentClass);
$(this).addClass(classes[randPick]);

如何申请$(this).addClass(classes[randPick]);仅当 classes[randPick]不是$(this).attr('class')中当前显示的类?

最佳答案

var classes = ['first', 'second', 'third', 'fourth', 'fifth'];
var randPick = Math.floor(Math.random()*classes.length-1)+1;
var temp = classes[0];
classes[0] = classes[randPick];
classes[randPick] = temp;
var currentClass = $(this).attr('class');
$(this).removeClass(currentClass);
$(this).addClass(classes[0]);

这将从 n-1 个类中随机选择,然后交换随机选择,这样就不会连续使用两次。 (但可以再次使用,只是不能连续使用两次。)

这就是您想要的,这是正确的吗?永远不要让某些内容连续显示两次/“已经应用的类?”

如果您希望所有类以随机顺序显示,然后再次以不同的随机顺序重新开始,那么您可以使用其他答案,并在清空后再次重置您的类变量,使用像这样的东西:

originalClases = ['first', ..., 'fifth'];
if (classes.length == 0) classes = originalClasses;
/* followed by var randPick and the rest of the suggested code */

关于javascript:选择随机项目(只要它尚未显示),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21105562/

相关文章:

javascript - 如何获取JS中嵌套Element.prototype函数中引用的元素?

javascript - 我可以而且应该在浏览器中实现 "desktop"应用程序吗?

javascript - 创建一个javascript对象并调用它的方法

javascript - 在 QUnit 中测试 SyntaxError 异常的最佳方法是什么?

javascript - 在 IE 中使轮子旋转

javascript - 我怎么知道用户是否点击了上一页的后退按钮

javascript - 在鼠标悬停时显示/隐藏 DIV

javascript - 使用 PHP 和 JavaScript 显示/禁用按钮

c++ - 指向类成员函数的指针

python - __init__ 方法中的异常处理