IE6~7でラジオボタンをappendChildした場合、そのラジオボタンはクリックできない。ラジオボタンとして致命的なバグである。
■失敗例
以下のようにDOM要素を操作する。
var input = document.createElement('input'); var p = document.createElement('p'); p.appendChild(input);
ちなみにjQueryを使うと以下のようになる。
var input = document.createElement('input'); var p = document.createElement('p'); $(p).append(input);
■解決策
IEだけinnerHTMLを使う。
var input = document.createElement('input'); var p = document.createElement('p'); if(!!(!window.opera && window.attachEvent)){ p.innerHTML = '<input type="radio" name="id" />'; } else{ p.appendChild(input); }
ちなみにjQueryを使うと以下のようになる。
var input = document.createElement('input'); var p = document.createElement('p'); if($.browser.msie){ $(p).append('<input type="radio" name="id" />'); } else{ $(p).append(input); }