for(x in tr)
{
var td = tr[x].getElementsByTagName('td');
if(isNaN((bids=parseInt(td[2].innerHTML))))bids=0;
}
循环仅适用于第一次迭代,但在第二次迭代中我收到错误 td[2] 未定义,而每行(tr)包含八个 8 列(td)。超过 50 Tr。
我已经尝试了很多,但很混乱。这不应该是一个错误。
for(x in tr)
{
var td = tr[x].getElementsByTagName('td');
if(isNaN((bids=parseInt(td[2].innerHTML))))bids=0;
}
循环仅适用于第一次迭代,但在第二次迭代中我收到错误 td[2] 未定义,而每行(tr)包含八个 8 列(td)。超过 50 Tr。
我已经尝试了很多,但很混乱。这不应该是一个错误。
如果tr
不是,则它有可能在循环Object
中拾取其他属性。for...in
如果是这种情况,.getElementsByTagName
将不存在并且会抛出异常。
如果tr
是Array
,您应该改用常规for
循环。
我的猜测是您通过不检查for in
循环来访问 tr 的无意属性。
尝试:
for(x in tr)
{
if(tr.hasOwnProperty(x)){
var td = tr[x].getElementsByTagName('td');
if(isNaN((bids=parseInt(td[2].innerHTML))))bids=0;
}
}
要快速解释原因,请考虑以下内容:"toString" in tr
将返回 true。
正如 Dasarp 所说,简单地更改您的代码。
for(x in tr)
{
var td = x.getElementsByTagName('td');
if(isNaN((bids=parseInt(td[2].innerHTML))))bids=0;
}
当您遇到此类错误时,使用 Web Inspector (Chrome/Safari) 或 Firebug (Firefox) 查看您的变量会很有用。在行上放一个调试断点var td =
,然后查看变量的值。
不过,这可能与for in
在数组上使用循环有关。将外部循环更改为此,看看它是否有效:
for (var x = 0, l = tr.length; x < l; ++x) {
var td = tr[x]....
抱歉,我在某些行 tr 下发现了一些隐藏列 td。如果显示=无,请检查您的 tr 和 td。