2012-08-24 23 views
1

我正在开发一个网页,但我需要一个JS脚本从目录中选择一个随机页面。目前我有这个剧本;JavaScript - 从目录中选择一个随机页面

<!-- Hide this script from old browsers -- 

var links = new Array(10) 
links[0] = "anal.html" 
links[1] = "brr-fail.htm" 
links[2] = "anal.html" 
links[3] = "brr-fail.htm" 
links[4] = "anal.html" 
links[5] = "brr-fail.htm" 
links[6] = "anal.html" 
links[7] = "brr-fail.htm" 
links[8] = "anal.html" 
links[9] = "brr-fail.htm" 
links[10] = "anal.html" 
function go() { 
var a = 1+Math.round(Math.random()*10) 
var i = a 
location = links[i] 
} 
// -- End Hiding Here --> 

</script> 

(别担心,它不是同性恋色情 - 米姆)

正如你所看到的,它是有点复杂的,有时它带来了一个“未定义”页面错误。有什么办法让它从整个目录中选择一个随机页面?说一些像;

www.urlhere.co.uk/memes/random/

谢谢你们

+1

JS是客户端,你不能用它列出服务器上的目录。 – F0G

回答

1

数学随机产生01之间的值,如果你用10乘,你会得到数0.09.9,如果你一轮,你会得到数010。所以你不需要添加1,在某些情况下,这会导致11,因为undefined,所以你没有。只需使用:

var a = Math.round(Math.random()*10); // {0-10} 

编辑:纠正我的错误1回答

注:实际上不会导致随机数的标准分配,因为0,如果,Math.random() 0.0 10只会导致 - 0.049 ...(0)和0.95 - 0.99 ...(10)你甚至可以赔率本:

var a = Math.floor(Math.random()*11); // {0-10} 

这样一个整体小数范围(X.0-X.9)地板下。

+0

提交者需要在0到10范围内的随机值。由于Math.random()不会等于或大于1,因此'Math.random()* 11'生成的每个数字都小于11,所以'Math.floor(Math.random()* 11)'将得到数字0到10. – aorcsik

+0

啊,看起来我需要一个PHP脚本来代替然后......嗯,狡猾 –

+0

在PHP中,你有一个这样的函数:'$ a = rand(0,10);'GL! – aorcsik

2

你出局了指数,你应该做的:

var a = Math.round(Math.random()*10); 

由于第0个元素的链接阵列不会触发由于1 +随机..

编辑:

var a = Math.floor(Math.random() * 11); 
+0

这段代码产生'a = 0'或'a = 10'的机会是'a'的一半,它是两者之间的任何其他值。 –

1

你错过了上线的末端;分隔符和

function randInt(max, min) { 
    return (min || 0) + Math.floor(Math.random()*(max+1)); 
} 
+1

';'是可选的... –

+0

感谢所有的更正家伙。有没有更简单的方法来做到这一点?我可以使用某种基本脚本来随机选择一个页面,而不是列出所有页面?一点AI。 –

+0

只有当页面被选择为服务器端时,因为没有所有页面的某种索引,JS将不知道哪些页面存在。 –

1
var links = new Array(10) 
links[0] = "anal.html" ; 
links[1] = "brr-fail.htm" ; 
links[2] = "anal.html" ; 
links[3] = "brr-fail.htm" ; 
links[4] = "anal.html" ; 
links[5] = "brr-fail.htm" ; 
links[6] = "anal.html" ; 
links[7] = "brr-fail.htm" ; 
links[8] = "anal.html" ; 
links[9] = "brr-fail.htm" ; 
links[10] = "anal.html" ; 
function go() { 
var a= Math.floor(Math.random() * links.length); 
var i = a; 
location = links[i] ; 
}