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。getelementsbytagname上的Javascript錯誤
我試了很多,但很混亂。它不應該是一個錯誤。
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。getelementsbytagname上的Javascript錯誤
我試了很多,但很混亂。它不應該是一個錯誤。
當你得到這樣的錯誤時,使用Web Inspector(Chrome/Safari)或Firebug(Firefox)查看你的變量是有用的。在var td =
行上放置一個調試斷點,然後查看變量的值。不過,這可能與在數組上使用for in
循環有關。外環更改爲這個,看看它的工作原理:
for (var x = 0, l = tr.length; x < l; ++x) {
var td = tr[x]....
我的猜測是,你是沒有查收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。
如果tr
不是Object
,那麼它有可能在for...in
循環中獲取其他屬性。如果是這種情況,.getElementsByTagName
將不存在,並會引發異常。
如果tr
是Array
,則應該使用常規for
循環代替。
對不起,我發現在一些行TR的一些隱藏的列TD。如果display = none,檢查你的tr和td。
簡單地改變你的代碼,因爲Dasarp說。
for(x in tr)
{
var td = x.getElementsByTagName('td');
if(isNaN((bids=parseInt(td[2].innerHTML))))bids=0;
}
使用x.getElementsByTagName( 'TD')代替TR [X] .getElementsByTagName( 'TD') – Dasarp