我正在开发一个网页,但我需要一个JS脚本,从目录中选择一个随机页面。目前我有这个脚本;
<!-- 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 /
谢谢你们
答案 0 :(得分:2)
您已退出索引,您应该这样做:
var a = Math.round(Math.random()*10);
因为链接数组的第0个元素因1 +随机而无法触发..
编辑:
var a = Math.floor(Math.random() * 11);
答案 1 :(得分:1)
数学随机生成0
和1
之间的值,如果乘以10,则会得到0.0
到9.9
的数字,如果你绕过它,那么你从0
到10
获取号码。所以你不需要为它添加1,因为undefined
,在某些情况下会导致11,因为你没有。只需使用:
var a = Math.round(Math.random()*10); // {0-10}
编辑:更正了错误的第一个答案
注意:实际上不会产生随机数的标准分布,因为只有当Math.random()
为0.0 - 0.049 ...(0)和0.95时才会产生0和10 - 0.99 ...(10)你甚至可以胜任:
var a = Math.floor(Math.random()*11); // {0-10}
这样整个小数范围(x.0-x.9)就会下降。
答案 2 :(得分:1)
你在行尾和
上缺少;
分隔符
function randInt(max, min) {
return (min || 0) + Math.floor(Math.random()*(max+1));
}
答案 3 :(得分: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] ;
}