IEが糞過ぎて困る.
これははまる人が他にも居そうだなあ.
よくある前のSelectで選択された内容に応じて,次のSelectの内容を変えるJavaScriptを書いてたんだけど,どうもIEで動かないからおかしいなあと思っていろいろ試してみた.
function overrideOptions(target, array) {
var select = document.getElementById(target);
while(select.length != 0) select.remove(0);
for(opt in array) {
if(array[opt].value == null || array[opt].text == null) continue;
var elem = document.createElement("option");
elem.setAttribute("value", array[opt].value);
var textNode = document.createTextNode(array[opt].text);
elem.appendChild(textNode);
select.add(elem,null);
}
}
太字の部分がIEで動かない部分.要は,DOM1の
HTMLSelectElement.add(in HTMLElement element,in HTMLElement before)
が実装されていないという罠.removeは動くのでまさかそんなことはないだろうと思ったが….
んで,この部分を
select.appendChild(elem);
としてやると大丈夫.さすがにコアはちゃんと動くのね.addで引数にnullじゃなくて,ちゃんとelementを指定してやればいいのかもしれないけど,そこまで試す気もないしね.
下らないことで時間を取ってしまったよ.それにしても,DOM1レベルですらちゃんと実装できてないなんて….IEってば本当に何なんだ.