for(x in tr)
{
var td = tr[x].getElementsByTagName('td');
if(isNaN((bids=parseInt(td[2].innerHTML))))bids=0;
}
ループは最初の反復でのみ機能しますが、2番目の反復でエラーtd [2]が未定義であるのに対し、各Row(tr)には8つの8列(td)が含まれています。50Tr以上。
私はたくさん試しましたが、とても混乱しています。エラーではないはずです。
for(x in tr)
{
var td = tr[x].getElementsByTagName('td');
if(isNaN((bids=parseInt(td[2].innerHTML))))bids=0;
}
ループは最初の反復でのみ機能しますが、2番目の反復でエラーtd [2]が未定義であるのに対し、各Row(tr)には8つの8列(td)が含まれています。50Tr以上。
私はたくさん試しましたが、とても混乱しています。エラーではないはずです。
tr
が でない場合、ループObject
で他のプロパティを取得している可能性があります。for...in
この場合、.getElementsByTagName
存在せず、例外がスローされます。
tr
が の場合、代わりにArray
通常のfor
ループを使用する必要があります。
Dasarpが言ったように、コードを簡単に変更してください。
for(x in tr)
{
var td = x.getElementsByTagName('td');
if(isNaN((bids=parseInt(td[2].innerHTML))))bids=0;
}
このようなエラーが発生した場合は、Web インスペクター (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 の下に非表示の列 td が見つかりました。display=none の場合は、tr と td を確認してください。