代码之家  ›  专栏  ›  技术社区  ›  John Brown

JavaScript-从目录中随机选择一个页面

  •  1
  • John Brown  · 技术社区  · 12 年前

    我正在开发一个网页,但我需要一个从目录中随机选择页面的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/随机/

    谢谢大家

    4 回复  |  直到 12 年前
        1
  •  2
  •   Zhafur    12 年前

    你超出了索引,你应该这样做:

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

    因为链接数组的第0个元素不会由于1+随机而触发。。

    编辑:

    var a = Math.floor(Math.random() * 11);
    
        2
  •  1
  •   aorcsik    12 年前

    数学随机生成一个介于 0 1 ,如果你乘以10,你得到的数字来自 0.0 9.9 ,如果你四舍五入,你会得到 0 10 。所以你不需要加1,在某些情况下会得到11,而你没有,因为 undefined 。简单使用:

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

    编辑: 纠正了我第一次答错的地方

    注: 实际上不会产生随机数的标准分布, Math.random() 是0.0-0.049…(0)和0.95-0.99…(10)您可以通过以下方式计算赔率:

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

    这样一来,整个十进制范围(x.0-x.9)都降到了最低。

        3
  •  1
  •   Paul S.    12 年前

    你失踪了 ; 行末尾的分隔符和

    function randInt(max, min) {
        return (min || 0) + Math.floor(Math.random()*(max+1));
    }
    
        4
  •  1
  •   Palani Kumar    12 年前
    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] ;
    }