【JavaScript】IE6でTABLE要素内をHTMLで書換える関数
element.innerHTML='(HTML)';とする代わりに、
replaceInnerHtml(element,'(HTML)');として使用します。
for (;;) {
if (typeof innerHTML!='string'||typeof tgtElm!='object'||tgtElm.nodeType!=1/*ELEMENT_NODE*/) break;
try {
tgtElm.innerHTML=innerHTML;
}
catch (e) {
var chld;
while (chld=tgtElm.firstChild) tgtElm.removeChild(chld); // remove all child elements
if (innerHTML.match(/^\s*$/) ) break; // clear only
var tagName=tgtElm.tagName.toLowerCase(), tmp, html='<'+tagName+'>'+innerHTML+'</'+tagName+'>';
switch (tagName) {
case 'thead' :
case 'tbody' :
case 'tfoot' :
tmp=document.createElement('table');
replaceInnerHtml(tmp, html);
break;
case 'tr' :
tmp=document.createElement('table');
replaceInnerHtml(tmp, '<tbody>'+html+'</tbody>');
tmp=tmp.firstChild;
break;
default :
tmp=document.createElement('div');
tmp.innerHTML=html;
break;
}
var tmpElm=tmp.firstChild;
while (chld=tmpElm.firstChild) tgtElm.appendChild(chld);
}
break;
}
return tgtElm;
}
| THEAD要素 |
|---|
| 下のボタンを押して試して下さい。 |
| TFOOT要素 |
■PRB: Internet Explorer に Table.innerHTML を設定しているエラー
原因
TABLE と TFOOT と THEAD と TR 要素の innerHTML プロパティは、読み取り専用です。
状況仕様といわれてしまってはそれまでですが、やっぱり直接書換えたいような場合もあるんじゃないかなぁ、と思って上記のような関数を作成してみたしだい。
この動作は、仕様です。
linkElement.innerHTML='<a href="http://~">hoge</a>';のようにすると『未知の実行時エラーです。』と出ることに、『りんくぽっぷ』を作っていて気が付きました。
2007/12/09(日) 14:09 | 固定リンク
| 記事の編集(管理者用)
「おもいつき」カテゴリの記事
- ちょっと小細工:textareaの高さを自動調節(2008.05.21)
- Yin and Yang:動作改善(?)他(2008.05.14)
- ノイズキャンセル(マスク|マイク)ってないのかな?(2008.05.07)
- 『はてブBOX』と、ココログ用『はてブコメント表示欄』スクリプトの更新(2008.05.05)
- Yin and Yang:リンク先の内容をその場で表示するスクリプトの更新(2008.05.02)
「パソコン・インターネット」カテゴリの記事
- ツールを作る側は対象に与える影響をどこまで気にするか?(2008.05.29)
- "『無断リンクはやめて』という人にはしない方向で"の思考過程(2008.05.24)
- 『無断リンクはやめて』という人にはしない方向で(2008.05.22)
- ちょっと小細工:textareaの高さを自動調節(2008.05.21)
- Yin and Yang:動作改善(?)他(2008.05.14)
「覚書」カテゴリの記事
- ちょっと小細工:textareaの高さを自動調節(2008.05.21)
- Google検索結果画面のHTML構造、変わりました?(2008.04.30)
- Googleの検索結果からH2タグが消える現象の原因(2008.05.03)
- 【JScript】ActiveXObject('htmlfile')で発生する不具合(2008.04.05)
- 【JavaScript】onmouseover/onmouseoutの振る舞い(2008.03.11)

