【Javascript】select(セレクトボックス)の中身を書き換えるとき
問題
IEで、セレクトボックスの中身を書き換えようとしたら、空になってしまいました。
function kakikae()
{
var select = document.getElementById('xxxx');
select.innerHTML = '<option>変更後</option>';
}
答え
IEでは、セレクトボックスをinnerHTMLで書き換えることができない不具合がある。
現象: 選択オブジェクトのinnerHTMLプロパティを設定すると、変更の効果が正しくなりません。
http://support.microsoft.com/?scid=kb%3Ben-us%3B276228&x=19&y=17
http://support.microsoft.com/kb/276228
innerHTMLを使わない書き方をするとよい。
function kakikae()
{
var select = document.getElementById('xxxx');
// option要素を削除(方法はいろいろありますが)
while (0 < select.childNodes.length) {
select.removeChild(select.childNodes[0]);
}
// option要素を生成
var option = document.createElement('option');
var text = document.createTextNode('変更後');
option.appendChild(text);
// option要素を追加
select.appendChild(option);
// 必要な分だけoption生成と追加を繰り返す
}