2012-05-18 42 views
0
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錯誤

我試了很多,但很混亂。它不應該是一個錯誤。

+3

使用x.getElementsByTagName( 'TD')代替TR [X] .getElementsByTagName( 'TD') – Dasarp

回答

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].... 
0

我的猜測是,你是沒有查收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。

0

對不起,我發現在一些行TR的一些隱藏的列TD。如果display = none,檢查你的tr和td。

0

簡單地改變你的代碼,因爲Dasarp說。

for(x in tr) 
{ 
    var td = x.getElementsByTagName('td'); 
    if(isNaN((bids=parseInt(td[2].innerHTML))))bids=0; 
} 
相關問題