我在许多书籍的帮助下学习JavaScript。在其中一个中,我想出了一个显示几个标志的脚本,然后你点击它们随机改变它们:
var myImages = new Array("usa.gif","canada.gif","jamaica.gif","mexico.gif");
function changeImg(that) {
var newImgNumber = Math.round(Math.random() * 3);
while (that.src.indexOf(myImages[newImgNumber]) != -1)
{
newImgNumber = Math.round(Math.random() * 3);
}
that.src = myImages[newImgNumber];
return false;
}
它有一个while循环,以确保当你点击一个标志时你不会得到同一个标志。 HTML中的其余代码如下所示:
<body>
<img name="img0" src="usa.gif" border="0" onclick="return changeImg(this)" />
<img name="img1" src="mexico.gif" border="0" onclick="return changeImg(this)" />
</body>
现在,我的问题是,如果我使用IF语句而不是while循环,显然代码的工作方式相同。在这个特定的例子中,为什么使用while循环而不是IF? 感谢。
答案 0 :(得分:6)
while
语句基本上翻译为“当我选择的数字与当前图片标记中已有的图像的索引匹配时,继续”。因此,虽然if
语句可能在大多数情况下都有效,但当您点击0
时,您的随机数生成器可能会连续多次生成img0
个数字。 while
确保最终获得新图片。
答案 1 :(得分:3)
涉及随机数;你可以连续两次获得相同的随机数。
检查一次是不够的 - 生成的下一个数字可能是相同的。
答案 2 :(得分:1)
不,因为您可以连续两次选择相同的一个,因为您使用的是随机数。
答案 3 :(得分:1)
你的目标是做一个随机的随机播放。尝试阅读该问题的答案: How to randomize (shuffle) a JavaScript array?