Create a Bingo Card
B | I | N | G | O |
---|---|---|---|---|
Free | ||||
Click here to create a new card
解决上节空白区域问题,使用do/while循环。
1.var newNum;
在前面的示例中,在创建newNum变量时对它进行初始化。因为本次讲多次设置它,所以在进入循环之前创建它,这样只需创建一次。
2.do{ }
这一行开始do代码块。关于这种循环必须记住的一点是:do块中的代码至少会执行一次。
3.while (usedNums[newNum]);
whlie检查会使do代码块反复执行,直到检查结果为false为止。在这个示例中,我们检查usedNums[]数组中newNum位置上的值,从而检测newNum是否已经使用过了。如果这个数字已经用过了,控制就被传递回do块的开头,整个过程再次重复。最终,会找到一个没有使用过的数字。之后,会离开循环,将usedNums设置为true,并将newNum写到卡片上。
window.onload = initAll;
var usedNums = new Array(76);
function initAll () {
if (document.getElementById){
for (var i = 0; i < 24 ; i++) {
setSquare(i);
}
}
else {
alert("Sorry,your browser doesn't support this script.")
}
}
function setSquare(thisSquare){
var currSquare = "square" + thisSquare;
var colPlace = new Array(0,0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4);
var colBasic = colPlace [thisSquare] * 15;
var newNum;
do{
newNum = colBasic + getNewNum() + 1;
}
while (usedNums[newNum]);
usedNums[newNum] = true;
document.getElementById(currSquare).innerHTML = newNum;
}
function getNewNum() {
return Math.floor(Math.random() * 15);
}