使用jquery在页面加载时随机调用不同的函数

时间:2012-09-14 08:07:22

标签: jquery random

我有六个功能,如scan1()scan2() ... scan6()。每个函数加载不同的图像。现在我想在每次加载页面时随机调用函数。

例如,

页面加载第一次,请致电sacn4()

第二次

页面加载,请致电scan6()

第三次

页面加载,调用scan1()

等等

页面加载我的意思是页面刷新/重新加载。

或者在我正在尝试的代码中帮助我

var arr = ['scan1()', 'scan2()', 'scan3()'];
var ran = Math.floor(Math.random() * 6) + 1

$(document).ready(arr[ran]);

感谢

5 个答案:

答案 0 :(得分:1)

$(function() {
    var arr = [scan1, scan2, scan3],
        rand = Math.floor(Math.random() * arr.length),
        func = arr[rand];

    func();
});

答案 1 :(得分:0)

这应该解决它:

var arr = [scan1, scan2, scan3];
var ran = Math.floor(Math.random() * 6) + 1

$(document).ready(arr[ran]());

您需要使用函数对象填充数组,而不是包含函数名称的字符串。在最后一行,当你说:

arr[ran]()

从数组中检索函数然后调用它。

答案 2 :(得分:0)

来自here

$(function() {
    var arr = ['scan1', 'scan2', 'scan3'];
    var ran = Math.floor(Math.random() * 3) + 1;
    window[arr[ran]]();
});

答案 3 :(得分:0)

这些函数存储在您的全局对象中,因此您无需将它们作为'functionName()'存储在数组中,而是存储为'functionName'。然后使用call()apply()进行通话。

var arr = ['scan1', 'scan2', 'scan3'];
var ran = Math.floor(Math.random() * 6) + 1

$(document).ready(window[arr[ran]].call(this));

答案 4 :(得分:0)

你应该重构你的代码,你想做的事情可以用一种更简单的方法完成,你不需要每个图像一个6个函数,只创建一个scan()函数,这个函数将有一个数组包含所有图像然后随机选择一个,如下所示:

function scan() {
    var images = ['im1.jpg','im2.jpg','im3.jpg','im4.jpg','im5.jpg','im6.jpg'];
    var inumber = Math.floor((Math.random()* images.length)+1);

    var random_image = images[inumber-1];

    //Do whatever you want with random_image
    alert( random_image ); //Shows the random image
}

作为一个加号,使用上面的代码,您甚至可以在将来向images数组添加更多图像,它们将自动包含在随机选择中。

使用上面的代码,您的document.ready将只是:

$(document).ready( scan() );