在页面加载时显示随机横幅

时间:2014-10-23 15:38:22

标签: javascript

我创建了一些JS,当用户加载页面时,它将显示随机页面横幅。

下面的代码有效,但我遇到的问题是它有两次显示相同横幅的倾向。显然,只有6个不同的横幅,这种情况发生的可能性很小。但是,有几次它最终连续3或4次显示相同的横幅。

所以,我的问题是,有没有更好的方式来显示随机横幅?下面发布的代码是否存在导致此问题发生的问题?感谢。

<script type="text/javascript">
    function randInt(n) {
        randNum = Math.ceil(Math.random()*n);
        return randNum;
    }

    function adDescription(n) {
        var descrip = new Array();
        descrip[1]="Support Us -- Donate Money Today";
        descrip[2]="Support Us -- Donate Money Today";
        descrip[3]="Support Us -- Donate Money Today";
         descrip[4]="Support Us -- Donate Money Today";
        descrip[5]="Support Us -- Donate Money Today";
        descrip[6]="Support Us -- Donate Money Today";

        return descrip[n];
    }

    function adLink(n) {
        var link = new Array();
        link[1]="url";
        link[2]="url";
        link[3]="url";
        link[4]="url";
        link[5]="url";
        link[6]="url";

        return link[n];
    }
    </script>

</head>

<body>

<div id="main">
<div id="ads">
  <script type="text/javascript">
var rNumber = randInt(6); //generate a random integer form 1 to 6
    var rAd = adDescription(rNumber); //description of the random ad
    var rLink = adLink(rNumber); //URL of the random ad

    document.write("<a href='" + rLink + "'>");
    document.write("<img src='ad" + rNumber + ".jpg' alt='" + rAd + "' />");
    document.write("</a>");

  </script>

1 个答案:

答案 0 :(得分:0)

你最好使用这样的功能:

function randInt(n) {
    return Math.floor(Math.random() * n) + 1;
}
// randInt(7) returns 1, 2, 3, 4, 5, or 6

原因是在您的版本中,如果您调用randInt(6),则可以获得0-6的返回值,实际上是7个数字而不是6个数字。当然,返回0的可能性非常小(仅当Math.random()完全返回0.000时才会发生),但仍然可以抛弃。这是因为Math.ceil(0) = 0