我的方法有什么问题:
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>
任何想法都会很棒
由于
答案 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]