JS:DOM:IEのバグ?bodyタグのid属性に”item”という名前を指定した場合の不具合
JavaScript・XHTML・CSS (43 items)
2005年12月27日
前にも書いたことありますが、
JavaScriptでDOMを使って、”TEST”という文字を書きたい場合、
以下のようなソースが一例になります。
これは、IE・FireFox・Operaでも動作するハズです。
(バージョンにもよるでしょうけど)
上記は大概のHTMLに対して有効ですが、
というようにbodyタグのid属性に”item”という名前を指定した場合、
IEのみの変なバグ?を見つけました。
この場合、上記スクリプトではエラーが出ます。
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”以外の名前を付ければいいんですが、
嫌な場合は、以下の様に修正してみても良いかもです。
「bodyタグのid属性に”item”の場合は、getElementById('item')で取得」
する訳です。
・・・かなりレアなケースの現象ですがね。。。
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')で取得」
する訳です。
・・・かなりレアなケースの現象ですがね。。。
前の記事 次の記事
