我创建了一些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>
答案 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