具有多个列表的随机URL JS

时间:2011-09-30 05:12:46

标签: javascript url random

我有一个导航栏,我想从与每个链接相关联的不同列表中访问随机URL。链路A将访问列表A,链路B将访问列表B,依此类推。 我一直在使用1997年的javascript代码,它适用于一个链接:

< - js文件中包含的代码: - >

rnd.today=new Date();
rnd.seed=rnd.today.getTime();

function rnd() {
        rnd.seed = (rnd.seed*9301+49297) % 233280;
        return rnd.seed/(233280.0);
};

function rand(number) {
        return Math.ceil(rnd()*number);
};

var item = 0;
var URL = new Array();

URL[item++] = 'listitema.php';
URL[item++] = 'listitemb.php.php';
URL[item++] = 'listitemc.php';

function randomJump() {
    var random = rand(item) - 1;
    location.href = URL[random];
};

< - end js file: - >

可通过以下方式访问:

<a href="javascript:randomJump()" onmouseover="self.status='';return true">

虽然这段代码适用于每页一个链接,但我现在需要让它适用于多个链接,每个链接都有不同的引用列表。我不知道如何使这个脚本适用于每个链接而不会干扰其他链接。 谢谢。

1 个答案:

答案 0 :(得分:1)

这是一个小功能,可以根据需要使用多个不同的URL列表:

var listA = [
    'listitem-a.php',
    'listitem-b.php',
    'listitem-c.php'
];

var listB = [
    'listitem-1.php',
    'listitem-2.php',
    'listitem-3.php'
];

var listC = [
    'listitem-x.php',
    'listitem-y.php',
    'listitem-z.php'
];

function goRandomURL(list) {
    window.location = list[Math.floor(Math.random() * list.length)];
}

然后,要使用listA,您可以致电:

goRandomURL(listA);

或将其放在如下链接中:

<a href="#" onclick="goRandomURL(listA)">

或对于listB,您可以使用:

<a href="#" onclick="goRandomURL(listB)">

为了您自己的参考,javascript Math.random()函数返回一个0到1之间的浮点数(不包括1)的随机数,并且它已根据本地环境播种,因此您无需介绍自己的种子或随机功能。随后通过传入的数组的长度来缩放随机数,然后向下舍入为数组索引的整数。这具有为我们的数组选择随机索引的效果。它会自动跟踪数组的长度,因此您可以自由地添加/删除数组中的项目,而无需以任何方式更改代码。


编辑 - 帮助您了解当前的代码。在您当前的代码中,我看到了:

var listA = [
    'orange.php';
    'red.php';
    'blue.php';
];

var listB = [
    'gold.php';
    'silver.php';
    'bronze.php';
];

var listC = [
    'olive.php';
    'pink.php';
    'purple.php';
];

应该是这样的:

var listA = [
    'orange.php',
    'red.php',
    'blue.php'
];

var listB = [
    'gold.php',
    'silver.php',
    'bronze.php'
];

var listC = [
    'olive.php',
    'pink.php',
    'purple.php'
];

而且:

goRandomURL(list) {
    window.location = list[Math.floor(Math.random() * list.length)];
}

应该是这样的:

function goRandomURL(list) {
    window.location = list[Math.floor(Math.random() * list.length)];
}