如何让我的javascript函数随机选择一个函数(幻灯片),执行它,然后重复?

时间:2016-01-24 03:50:03

标签: javascript function loops random onload

我有一个javascript代码,用于替换包含图片的html <div>,因此它就像幻灯片一样。我在页面上有六个这样的幻灯片,我需要他们随机改变切换图像3然后6然后2等等。

$(document).ready(function(){
     SlideShow6();
});

function SlideShow6() {
    $('#slideshow6 > div:gt(0)').hide();

    setInterval(function () {
        $('#slideshow6 > div:first')
        .fadeOut(0)
        .next()
        .fadeIn(0)
        .end()
        .appendTo('#slideshow6');
    }, 0000);
}

结尾的时间是0000(0)秒。因为我需要计时器在选择随机幻灯片滑动之前暂停2000(2)秒。我用这个尝试了我的脚本:

var funcs = [];

funcs[0] = function() {
    $('#slideshow6 > div:gt(0)').hide();

    setInterval(function () {
        $('#slideshow6 > div:first')
        .fadeOut(0)
        .next()
        .fadeIn(0)
        .end()
        .appendTo('#slideshow6');
    }, 0000);
}
funcs[1] = function() {
    $('#slideshow5 > div:gt(0)').hide();

    setInterval(function () {
        $('#slideshow5 > div:first')
        .fadeOut(0)
        .next()
        .fadeIn(0)
        .end()
        .appendTo('#slideshow5');
    }, 0000);
}

//等等六次...... 然后...

$(document).ready(function(){
    var rand = parseInt(Math.random()*funcs.length);  
    funcs[rand]();
    setTimeout(arguments.callee, 2000);
});

它变得非常奇怪,它随机选择我的功能,但它无限次地执行幻灯片放映,并且很快就会有六个它们开启和运行。也许是因为0000?我需要它们逐个切换图像。

---------- ---------- UPDATE 我不确定上面的代码是否可以理解,但SlideShow6函数每次重复6次,每次都有funcs[1]个不同的数字,以便它可以将所有6张图片的幻灯片添加到{ {1}}数组。

我是JavaScript的新手,但在文字中这是我对代码进行成像的方式:

需要制作一个数组,以便将所有这些功能放入其中

funcs[]

然后你需要调用它,所以做一个数学函数,选择1-6随机选择任何数字然后函数播放一次。然后随机选择在2秒内选择另一个数字。另一张图片幻灯片改变了。这就是永远每2秒一次。谢谢。

1 个答案:

答案 0 :(得分:2)

所有在Chrome控制台中完成的测试:

setInterval的第二个参数设置为0会导致该函数无限次运行。我不知道为什么 - 我希望这个功能能够立即运行一次。

您可以通过执行以下操作在控制台中看到此内容:

setInterval(function () {
  console.log('Crazy');
}, 0000);

(为了简洁起见,我已经删除了这篇文章的一些迭代,因为它们被问题OP认为是不够的。)

更新2:

var funcs = [];

funcs[0] = function() {
  $('#slideshow6 > div:gt(0)').hide();

  $('#slideshow6 > div:first')
    .fadeOut(0)
    .next()
    .fadeIn(0)
    .end()
    .appendTo('#slideshow6');
}

funcs[1] = ...;
funcs[2] = ...;
funcs[3] = ...;
funcs[4] = ...;
funcs[5] = ...;

$(document).ready(function() {
  window.setInterval(function() {
    var rand = Math.floor(Math.random() * funcs.length);
    funcs[rand]();
  }, 2000);
});

我认为这是一个更优雅的解决方案。这是做什么的:永远循环。每次循环迭代,等待2秒,然后切换随机图像。