簡體   English   中英

井字游戲清除方法JavaScript

[英]Tic-Tac-Toe clear method JavaScript

我明確的方法有什么問題:

function _Clear(){
for (var row = 0 ; row < tbl.rows.length; row++)
{
        for (var cell = 0 ; cell < tbl.rows[row].cells.length; cell++)
        {

        tbl.rows[row].cells[cell].childNodes[0].src = null;

        }
}   
}

這是我的桌子:

     tbl = document.getElementById("matrix");

當我單擊清除時,什么也沒發生?

更多html:

      <body>

    <table>
        <tr>
            <td width="100pt">
                <label>Player 1:</label> <input type="radio" name="players" id="player1"checked="checked"/>
            </td>
            <td width="100pt">
                <label>Player 2:</label> <input type="radio" name="players" id="player2"/>
            </td>
        <td width="100pt">
            <input type="button" onclick="_Clear()" value="Clear"/>
        </td>
        </tr>
    </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>
<tr>
    <td class="cellCSS">
        <img alt="Click Here" class="imageCSS" onclick="imageClicked(this,1,0)"/>
    </td>
<td class="cellCSS">
        <img alt="Click Here" class="imageCSS" onclick="imageClicked(this,1,1)"/>
    </td>
<td class="cellCSS">
        <img alt="Click Here" class="imageCSS" onclick="imageClicked(this,1,2)"/>
    </td>
</tr>
<tr>
    <td class="cellCSS">
        <img alt="Click Here" class="imageCSS" onclick="imageClicked(this,2,0)"/>
    </td>
<td class="cellCSS">
        <img alt="Click Here" class="imageCSS" onclick="imageClicked(this,2,1)"/>
    </td>
<td class="cellCSS">
        <img alt="Click Here" class="imageCSS" onclick="imageClicked(this,2,2)"/>
    </td>
</tr>
</table>
</body>

任何想法都會很棒

謝謝

我猜它與如何/何時聲明tbl變量有關。

http://jsfiddle.net/userdude/wfEhM/

如果我在函數中聲明它而忽略var ,則它是在調用函數時可訪問的內部范圍變量:

function _Clear(){
    tbl = document.getElementById("matrix");
    for (var row = 0 ; row < tbl.rows.length; row++)
    {
        for (var cell = 0 ; cell < tbl.rows[row].cells.length; cell++)
        {
            // Note, I changed this line for testing, since I don't
            // have the images.
            alert(tbl.rows[row].cells[cell].childNodes[0].src);
        }
    }   
}

我認為正在發生以下情況:a)您正在創建超出范圍的tbl變量(例如,在另一個沒有var關鍵字的函數中),或者b)您是在頁面加載期間或在matrix元素之前創建的加載,而不是之后加載,以便您的tbl指針不會指向任何地方。 也許您正在同時做這兩項。

檢查您的tbl變量是否正常(使用警報或其他方法)。

閱讀您的代碼時,我假設您想在單擊清除按鈕時將src屬性設置為空...我調試了您的代碼,並看到tbl.rows[row].cells[cell].childNodes[0]為實際上是一個“ \\ n”字符(返回到行)。

為了避免這種情況,請改用tbl.rows[row].cells[cell].getChildren()[0]

祝好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM