1

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

例如第一次加载页面,调用sacn4()

页面加载第二次,调用scan6()

第三次页面加载,调用scan1()

等等

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

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

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

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

谢谢

4

5 回答 5

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

    func();
});
于 2012-09-14T08:11:48.323 回答
0

这应该解决它:

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

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

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

arr[ran]()

您从数组中检索一个函数,然后调用它。

于 2012-09-14T08:10:31.973 回答
0

这里

$(function() {
    var arr = ['scan1', 'scan2', 'scan3'];
    var ran = Math.floor(Math.random() * 3) + 1;
    window[arr[ran]]();
});
于 2012-09-14T08:11:07.373 回答
0

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

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

$(document).ready(window[arr[ran]].call(this));
于 2012-09-14T08:13:55.793 回答
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() );
于 2012-09-14T08:24:33.243 回答