Web Artisan Blog - ウェブ アルチザン ブログ

JS:DOM:IEのバグ?bodyタグのid属性に”item”という名前を指定した場合の不具合

JavaScript・XHTML・CSS (43 items)

2005年12月27日

Research Artisan Pro ←リサーチアルチザンがパワーアップして復活しました!!
前にも書いたことありますが、
JavaScriptでDOMを使って、”TEST”という文字を書きたい場合、
以下のようなソースが一例になります。

var body = document.getElementsByTagName('body');
var item = body.item(0);
var text = document.createTextNode('TEST');
item.appendChild(text);



これは、IE・FireFox・Operaでも動作するハズです。
(バージョンにもよるでしょうけど)

上記は大概のHTMLに対して有効ですが、

<body id="item">


というようにbodyタグのid属性に”item”という名前を指定した場合、
IEのみの変なバグ?を見つけました。
この場合、上記スクリプトではエラーが出ます。
どうも、
var body = document.getElementsByTagName('body');
var item = body.item(0);
この辺の、item(0)に対して、
id="item"が悪さをしているような感じです。。

そもそも、bodyタグのid属性に”item”以外の名前を付ければいいんですが、
嫌な場合は、以下の様に修正してみても良いかもです。

var body;
var item;
if (document.getElementById('item')) {
  item = document.getElementById('item');
} else {
  body = document.getElementsByTagName('body');
  item = body.item(0);
}
var text = document.createTextNode('TEST');
item.appendChild(text);



「bodyタグのid属性に”item”の場合は、getElementById('item')で取得」
する訳です。


・・・かなりレアなケースの現象ですがね。。。
前の記事 次の記事

Comments

コメントは、まだ書かれていません

Add Comments

Trackback

トラックバックはありません

Trackback URL

http://www.res-system.com/weblog/action.php?action=plugin&name=TrackBack&tb_id=544