Tic-Tac-Toe清除方法JavaScript

时间:2011-04-10 09:21:17

标签: html 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>

任何想法都会很棒

由于

2 个答案:

答案 0 :(得分:0)

我猜这与你宣布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指针不指向任何位置。或者也许你正在做这两件事。

答案 1 :(得分:0)

检查您的tbl变量是否正常(使用警报或其他内容)。

阅读你的代码我假设你想要在你点击清除按钮时将src属性设置为空...我已经删除了你的代码,我看到tbl.rows[row].cells[cell].childNodes[0]实际上是一个“ n“字符(返回行)..

要避免这种情况,请改用tbl.rows[row].cells[cell].getChildren()[0]

祝你好运!