今日、Firefox の Javascript で奇妙な問題が発生しています。
いくつかのテーブル行を操作しようとしていますが、.getElementsByTagName("tr");
がらくたを引き戻しています。
dynamicTable.tableBody = dynamicTable.getElementsByTagName("tbody")[0];
var tableRows = dynamicTable.tableBody.getElementsByTagName("TR");
var actualTableRows = new Array();
for(var i in tableRows) {
var row = tableRows[i];
alert(row.tagName);
if(row.tagName == "TR"){
actualTableRows.push(row);
}
}
dynamicTable.bodyRows = actualTableRows;
もちろん不可解な部分は、エラーを修正するための一時的なハックです。何らかの理由.getElementsByTagName("tr")
で、いくつかの機能も引き戻されています。
ちなみに、上記のアラートは「TR TR TR TR undefined undefined undefined」のようになります。
私が欲しかったコードはこのようなものでした
dynamicTable.bodyRows = dynamicTable.tableBody.getElementsByTagName("tr");
しかし、要素bodyrows
だけが含まれているわけではなく<tr>
、前述のがらくたが含まれています。
何かご意見は?
編集:コードの 2 番目のブロックを使用すると、21 個のテーブル行 (tr 要素) を持つテーブルで 24 要素の長さのリストが得られます。コードの最初のブロックは、問題を修正する単なるハックです。
アラートを次のように変更すると、次のようalert(row)
になります。
[object HTMLTableRowElement]
...
function item() {
[native code]
}
21
function namedItem() {
[native code]
}