我为网格库创建了这个脚本,每3秒随机更改一次图像,通过更改其srcset属性,总共有15个可见图像,但是数组是由28个进行的,因为它的随机有时会发生3或者更多相同的图像,有机会让所有15个相同(疯狂的小机会,但你得到我的观点),我想以某种方式阻止它。
我正在考虑以某种方式定义最多可能存在2个相同的属性,因此如果有2个属性,它不会将其他img更改为该属性。或者如果可能的话,这将是完美的,只有一个属性可见,如果确实存在该属性,它就不会将其添加到其他img。
我最多可以拥有2个相同的属性,因为它可以最大限度地减少同时看到它们的机会,因为一半是隐藏的,它会阻止seeig 3或更多。
继承人jQuery:
$(function() {
//array
var dice = $('.attachment-lenslight_squares').map(function() {
return $(this).attr('srcset')
}).get();
$('.attachment-lenslight_squares')
.click(function() {
var num = Math.floor(Math.random() * dice.length);
$(this).fadeOut(200, function() {
$(this).attr('srcset', dice[num]);
}).fadeIn(200);
});
setInterval(function() {
var rand = Math.floor(Math.random() * 15);
$('.attachment-lenslight_squares').eq(rand).click();
}, 3000);
});
感谢您的想法
答案 0 :(得分:0)
您可以为每个图像使用计数器(使用对象)并确定计数器是否低于某个值,如3
,如果不是,则获取另一个随机值。
对于已删除(或隐藏)的图像,递减计数器。
答案 1 :(得分:0)
总共有15个可见图像,但阵列是由28个
组成的
网格初始化:
presentImages
presentImages
中随机选择13张图片,删除它们并构建一个名为absentImages
presentImages
和absentImages
presentImages
何时需要更改图片:
absentImages[0]
absentImages[0]
从absentImages
数组移至presentImages
数组presentImages
移至absentImages
,以使其成为absentImages
数组中新的最后一个图像答案 2 :(得分:0)
下面是从现有图像数组中获取唯一且随机的15个项目的示例代码:
var mainImages = [], random; // 28 or more items
//at first : max = 15, count = 0 , indexes = []
getUniqueRandomIndexs(max, count, indexs){
// return images after generating unique items
if(indexs.length == max) return indexes;
// dont use which is already used : mainImages.length-count
random = math.random(0,mainImages.length-1-count);
indexs.push(mainImages[random]);
count++;
// swap pushed image to last of the mainImages array, so that next time wont be using it.
mainImages[random] = mainImages[mainImages.length-1-count];
mainImages[mainImages.length-1-count]; = indexs[indexs.length-1];
retunr getUniqueRandomIndexs(max, count, indexs);
}
每3秒钟此功能将返回唯一的图像数组。
这似乎与从一叠cd中挑选
unique & random
电影cd一样,观看之后请将其保留在last of stack
这样我们就可以在拿起新的随机独特电影CD时轻松跳过。