IE 6/7動的に作成されたラジオボックスは選択できません


詳細
IE 6/7では、動的に作成されたラジオボックスはユーザによって選択されない.これは既知のバグであり、IE 8で修正されている.すでに多くの資料がこの問題を討論している.この問題については、ラジオボックスの選択された状態(checked=true)を設定するには、ラジオボックスがDOM構造に組み込まれた後に行う必要があることに注意してください.私も簡単なページを書いて、この問題をテストして修正しました.基本的な考え方はonclickイベントによって動的に選択することである.基本的なコードは次のとおりです.
 
IE 7 radio

(function() {
function byId(id) {
return document.getElementById(id);
}

var data = [["label1", "value1"], ["label2", "value2"], ["label3", "value3"]];

var selectedRadio = null;

function buildRadios() {
var root = byId("test");
for (var i = 0; i <data.length; i++) {
var label = document.createElement("label");
label.innerHTML = data[i][0];
var radio = document.createElement("input");
radio.type = "radio";
radio.name = "test_radio";
radio.value = data[i][1];
root.appendChild(label);
root.appendChild(radio);

if (i == 0) {
radio.checked = true;
selectedRadio = radio;
}

radio.onclick = function() {
this.checked = true;
if (selectedRadio != this) {
selectedRadio.checked = false;
selectedRadio = this;
}
};
}
}

window.onload = function() {
buildRadios();
};
})();