今日、私は物事をする際に問題に遭遇しました。複数の行のデータをテーブルに動的に追加しようとし、最初にテーブルを定義しました。
123456 | <表> <thead> </head> <tbody id = filelist> </tbody> </table> |
その後、JavaScriptで:
12345 | for(var i in entries){... var filetable = document.getElementById( 'fileList'); filetable.innerhtml += '<tr> <td> 111 </td> <td> 222 </td> </tr>';} |
Firefoxでは問題はありませんが、IEの下に置くことは不可能です。私は同僚+を検索し、これらの要素のinnerHTML属性が読み取り専用であり、IEで直接操作できないことを発見しました。しかし、解決策はありません。 TDのinnerhtmlは引き続き操作できます。上記のコードは次のように変更できます。
123456789101112 | for(var i in entries){... var filetable = document.getElementById( 'fileList'); var tr = document.createelement( 'tr'); var td1 = document.createelement( 'td'); td1.innerhtml = '111'; var td2 = document.createelement( 'td'); td2.innerhtml = '222'; Tr.AppendChild(TD1); Tr.AppendChild(TD2); filetable.appendchild(tr);} |
最初にDOMのCreateElementメソッドを使用してTRとTDを作成し、次にTDのinnerHTMLで対応する操作を実行し、最後にAppendChildメソッドを使用して作成された要素をDOMツリーに追加します。これにより、IEの下で正常に実行できます。あなたのテーブルにtbodyがない場合、それはこれを行うことに注意する必要があります:
1 | <テーブルID = FileList> </table> |
現時点では、IE6の下のテーブル要素がappendChildメソッドをサポートしていないため、テーブルにAppendChildメソッドを直接使用することはできません(IE8はすでにサポートしているようです)。
インターネット上の一部の人々は、Insertrow()およびそれを行う他の方法を使用することも提案していますが、この方法には異なるブラウザー(Insertrow(-1)がFirefoxで必要です)との互換性に問題があるため、役に立たない。
ところで、私は以前に多くのJS情報を意識的に読んだことがありましたが、私はまだ真実に気づきました。今、私は忙しくなり始めています、そして私は私の勉強で落ち着いています