Home > 雑記 > InternetExplorerではJavascrptでcheckboxのchecked属性はドキュメントに要素を追加したあとでないとできないらしい
2011-01-18 (Tue)

InternetExplorerではJavascrptでcheckboxのchecked属性はドキュメントに要素を追加したあとでないとできないらしい

JavaScriptを書いてFirefoxあたりで確認して動作したと安心してはいけない。この安心がいつもの落とし穴。
InternetExplorer6という難攻不落の城の攻略がまだである。
InternetExplorer6で動作させてみる。そして、動かない。いつものことである。

こんなことが日々繰り替えされているけど、今回もまたである。

JavaScriptで

var Element1=document.createElement("input");Element1.id = "e1";Element1.type="checkbox";Element1.checked=true;document.createElement("body").appendChild(Element1);

上のような感じで書いたのですけど、なぜかInternetExplorerでチェックされた状態で要素が追加されない。
要素を追加した後の属性の変更を許可するということらしい。
それで上のソースをInternetExplorerで動作させるには

var Element=document.createElement("input");Element.type="checkbox";document.createElement("body").appendChild(Element);Element.checked=true;

とすると動作する。

また、

var Element1=document.createElement("div");Element1.id = "e1";var Element2=document.createElement("input");Element2.id = "e2";Element2.type="checkbox";Element1.appendChild(Element2);Element2.checked=true;document.createElement("body").appendChild(Element1);

親要素もjavascriptで新たに追加する場合、上のようなソースの書き方の場合、InternetExplorer6ではチェックが入らない。InternetExplorer7ではチェックがはいります。

InternetExplorer6でも動作させるには要素を作った時点でDOMに追加するといい感じです。

var Element1=document.createElement("div");Element1.id = "e1";document.createElement("body").appendChild(Element1);var Element2=document.createElement("input");Element2.id = "e2";Element2.type="checkbox";Element1.appendChild(Element2);Element2.checked=true;

これから推測するところはInternetExplorer6はブラウザ上に表示されてからcheckboxのchecked属性は変更できる。
InternetExplorer7はJavaScript内部で要素を作り出せた時点でcheckboxのchecked属性は変更できるということになるのでしょう。ちなみにInternetExplorer8では比較してないのでわからないけど、InternetExplorer7と同じ動作かなと思います。

参考にしたサイト
http://motivation.drivendevelopment.jp/2009-03-16-1.html
http://smil.exblog.jp/5349616/

ちなみに、上のコードは自分で書いたコードからすこし変更を加えて、変更を加えたあとは動作チェックしていませんので、あしからず。

パーマリンク

関連記事

コメントをどうぞ

%3c%69%6e%70%75%74%20%74%79%70%65%3d%22%68%69%64%64%65%6e%22%20%6e%61%6d%65%3d%22%6e%70%5f%70%72%6f%74%65%63%74%62%79%6d%64%35%22%20%76%61%6c%75%65%3d%22%31%33%66%62%64%37%38%38%66%66%34%37%38%36%33%37%36%32%64%34%65%38%35%38%61%39%61%39%62%37%38%66%22%3e %3c%69%6e%70%75%74%20%74%79%70%65%3d%22%68%69%64%64%65%6e%22%20%6e%61%6d%65%3d%22%6e%70%5f%70%72%6f%74%65%63%74%62%79%6d%64%35%5f%68%61%73%68%22%20%76%61%6c%75%65%3d%22%36%66%39%63%36%66%34%65%65%62%35%64%61%38%66%33%32%34%32%33%36%33%63%38%64%34%35%33%65%34%65%62%22%3e

トラックバック

このエントリにトラックバックはありません
このトラックバックURLを使ってこの記事にトラックバックを送ることができます。 もしあなたのブログがトラックバック送信に対応していない場合にはこちらのフォームからトラックバックを送信することができます。.
Home > 雑記 > InternetExplorerではJavascrptでcheckboxのchecked属性はドキュメントに要素を追加したあとでないとできないらしい
プロフィール

ぶーすけ

まったりなにか作ってます。

はてな

作ったサービス
Skboo!!(β)
Skboo!!(β)

誰でも参加できるブラウザ上のペイントツールでイラストが描けて投稿できるお絵かきブログサービスです。

とらドラのロゴのようなジェネレーター
とらドラのロゴのサンプル

アニメのとらドラ風のロゴが作れるジェネレーター。雰囲気のみ!

skbooの画像変換ツール
skbooの画像変換ツール

簡単に画像フォーマットを変換できるオンラインツールです。

skbooのお絵かき掲示板

みんなで1枚。お気軽にお描きください。

WORKING!!のロゴのようなジェネレーター
WORKING!!のロゴのサンプル

アニメのWORKING!!風のロゴが作れるジェネレーター。あくまで雰囲気のみだけです(TT)

3DS MPO コンバーター
3DS MPO コンバーター

ニンテンドー3DSで撮影した3D写真をパソコン等で見られるようにJpgファイルに変換するアプリケーションです。

Page Top