[英]How to check Tic-Tac-Toe Winner
我想知道我的代碼出了什么問題。 我使用網站正文和javascript中的表格制作了井字游戲。 這是我的代碼的相關部分:
內部機構:
<body>
</table>
<table id="matrix" border="1">
<tr>
<td class="cellCSS">
<img alt="Click Here" class="imageCSS" onclick="imageClicked(this,0,0)"/>
</td>
<td class="cellCSS">
<img alt="Click Here" class="imageCSS" onclick="imageClicked(this,0,1)"/>
</td>
<td class="cellCSS">
<img alt="Click Here" class="imageCSS" onclick="imageClicked(this,0,2)"/>
</td>
</tr>
...
</table>
</body>
這是函數imageClicked的相關部分:
...
same = false;
var r = 0;
tbl = document.getElementById("matrix");
//alert(tbl.rows.length);
for(r = 0; r < tbl.rows.length; r++) {
// alert('Bob');
var _tempmg = tbl.rows[r].cells[col].childNodes[0].src;
alert(_tempmg);
if (!_tempmg) break;
if (_img.src != _tempmg) break;
same = true;
}
if (r == tbl.rows.length && same) {
alert(_img.src + "won");
return;
}
same = false;
...
您的問題是r == tbl.rows.length始終為false,因為for循環在r <tbl.rows.length時進行迭代。
您應該包含更多的imageClicked函數。 我猜它開始了:
function imageClicked(element, row, col) {
並在您發布的代碼中:
same = false;
大概您已經聲明了相同的內容以保持其本地性。
var r = 0;
如果您在循環中進行初始化,則無需在此處初始化r(即為其分配值)。
tbl = document.getElementById("matrix");
for(r = 0; r < tbl.rows.length; r++) {
var _tempmg = tbl.rows[r].cells[col].childNodes[0].src;
if (!_tempmg) break;
在您的html中,您尚未為image src屬性分配一個值,因此我認為這時您將根據用戶單擊它來分配一個零或叉號。 分配適當的圖像后,我將執行下一行。
if (_img.src != _tempmg) break;
same = true;
將條件添加到for(...)表達式中可能更清楚:
for(r = 0; r < tbl.rows.length && !same; r++) {
現在,您可以使用:
if (_img.src == _tempmg) same = true;
。
}
if (r == tbl.rows.length && same) {
alert(_img.src + "won");
return;
}
same = false;
我需要查看更多imageClicked函數以了解為什么它不起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.