我有一张个人资料图片,想要在单击时更改。我已经创建了一些类来根据应用的类来更改此元素的背景图像,但我不确定如何进行比较。
我知道如何创建类数组以及如何选择随机类,我只是不知道如何判断刚刚选择的随机类是否也是已应用的类。
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/