javascript - jQuery Math.random : avoid repeating same item

标签 javascript jquery random fadein

我有这个功能,它让我的 div 每 3 秒随机“滑动”一次:

$(function () {
  $('.fadein p:gt(0)').hide();
  setInterval(function () {
      var randomize = 1 + Math.floor(Math.random() * $('.fadein > p').length);
      $('.fadein > p').fadeOut();
      $('.fadein > :nth-child(' + randomize + ')').fadeIn();
  }, 3000);
});

这是 fiddle .问题是有时幻灯片是相同的(因为生成的随机数连续两次相同)。你能帮我创建一些变量来存储最后生成的数字,这样当函数调用 Math.random() 时,如果该数字等于最后生成的数字,它会再次调用它。

最佳答案

在随机之前,您应该检查哪些 p 是可见的。然后,您应该在该堆栈中进行游戏,以确保不会将同一图像随机播放两次。这段代码做到了:

$(function () {
    $('.fadein p:gt(0)').hide();
    setInterval(function () {
        var $p = $('.fadein > p').not(':visible') //Select only the hidden one
        var randomize = Math.floor(Math.random() * $p.length); //Use only those hidden, remove the 1 since we are now on a 0-based index
        $('.fadein > p').fadeOut();
        $p.eq(randomize).fadeIn(); //Use eq on the hidden p
    }, 3000);
});

http://jsfiddle.net/775pR/3/

关于javascript - jQuery Math.random : avoid repeating same item,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24873446/

相关文章:

python如何索引列表然后从中随机选择

javascript - 如何使用 vue.js 从输入中获取值?

javascript - 将元素移动到正文的末尾并返回到原始位置

javascript - 数据表无法按日期搜索

java - 加载js文件时出现无法加载资源错误

javascript - 我怎样才能将随机变成顺序Javascript?

javascript - 我们如何禁用 Google Chrome 中的按钮

jquery - 将 html 设置为 <div> 然后用 jQuery 添加监听器?

javascript - 波斯语中的 jQuery

c++ - 不同位的随机对