日期:2014-05-16  浏览次数:20496 次

javascript 中 do...while问题。
js代码:红色的那块不明白。谁能帮我分析一下啊?
window.onload = initAll;
var usedNums = new Array(76);

function initAll() {
if (document.getElementById) {
document.getElementById("reload").onclick = anotherCard;
newCard();
}
else {
alert("Sorry, your browser doesn't support this script");
}
}

function newCard() {
for (var i=0; i<24; i++) {
setSquare(i);
}
}

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,3,3,3,3,3,4,4,4,4,4);
var colBasis = colPlace[thisSquare] * 15;
var newNum;


        do {
newNum = colBasis + getNewNum() + 1;
}
while (usedNums[newNum]);
        

        usedNums[newNum] = true;
document.getElementById(currSquare).innerHTML = newNum;
        
 //这段代码怎么跑的?为什么可以剔除已经用过的数字?
}

function getNewNum() {
return Math.floor(Math.random() * 15);
}

function anotherCard() {
for (var i=1; i<usedNums.length; i++) {
usedNums[i] = false;
}

newCard();
return false;
}


html代码
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Make Your Own Bingo Card</title>
<link type="text/css" rel="stylesheet" href="script01.css" />
<script type="text/javascript" src="script08.js"></script>
</head>
<body>
<h1>Create A Bingo Card</h1>
<table>
<tr>
<th width="20%">B</th>
<th width="20%">I</th>
<th width="20%">N</th>
<th width="20%">G</th>
<th width="20%">O</th>
</tr>
<tr>
<td id="square0">&nbsp;</td>
<td id="square5">&nbsp;</td>
<td id="square10">&nbsp;</td>
<td id="square14">&nbsp;</td>
<td id="square19">&nbsp;</td>
</tr>
<tr>
<td id="square1">&nbsp;</td>
<td id="square6">&nbsp;</td>
<td id="square11">&nbsp;</td>
<td id="square15">&nbsp;</td>
<td id="square20">&nbsp;</td>
</tr>
<tr>
<td id="square2">&nbsp;</td>
<td id="square7">&nbsp;</td>
<td id="free">Free</td>
<td id="square16">&nbsp;</td>
<td id="square21">&nbsp;</td>
</tr>
<tr>
<td id="square3">&nbsp;</td>
<td id="square8">&nbsp;</td>
<td id="square12">&nbsp;</td>
<td id="square17">&nbsp;</td>
<td id="square22">&nbsp;</td>
</tr>
<tr>
<td id="square4">&nbsp;&l