我有一个导航栏,我想从与每个链接相关联的不同列表中访问随机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">
虽然这段代码适用于每页一个链接,但我现在需要让它适用于多个链接,每个链接都有不同的引用列表。我不知道如何使这个脚本适用于每个链接而不会干扰其他链接。 谢谢。
答案 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)];
}