ホームページ >ウェブフロントエンド >jsチュートリアル >IE での読み取り専用 innerHTML_javascript テクニック
今日何か作業中に問題が発生しました。最初にテーブルを定義しました:
111 | gt;222} これは FireFox で行う方法です。問題はありませんが、IE の下に置くと機能しません。同僚に検索してもらったところ、COL、COLGROUP、FRAMESET、HTML、STYLE、TABLE、TBODY が見つかりました。 、TFOOT、THEAD、TITLE、TR は、IE における COL、COLGROUP、FRAMESET、HTML、TFOOT、THEAD、TITLE、TR の要素です。 innerHTML プロパティは読み取り専用であり、直接操作できません。しかし、解決策はありません。上記のコードは次のように変更できます。 コードは次のとおりです: for(var i in events){ ... var filetable = document.getElementById('filelist'); var tr = document .createElement(' tr'); var td1 = document.createElement('td'); td1.innerHTML = '111'; td2.innerHTML = '222'; tr.appendChild(td2);
はい。まず DOM の createElement メソッドを使用して tr と td を作成し、次に td の innerHTML で対応する操作を実行し、最後に appendChild メソッドを使用して作成された要素を DOM ツリーに追加します。これにより、IE で正常に実行できるようになります。テーブルに tbody がない場合は、次のような場合に注意してください: 現時点では、appendChild メソッドは使用できません。 IE6 のテーブル要素は appendChild メソッドをサポートしていないため (IE8 はすでにサポートしているようです)。 インターネット上の何人かは、insertRow() などのメソッドを使用してこれを行うことを提案していますが、この方法はさまざまなブラウザとの互換性にも問題があります (FireFox では insertRow(-1) を使用する必要があります)。役に立たない。 ところで、私はこれまで意識的に JS の情報をたくさん読んできましたが、それでも実践を通じて真実を学びました。今はただ急いでいるだけなので、冷静になることを学んでいます。 |