2008-02-24 [長年日記]

_ [javascript] Select.add() / Select.remove()

<select> に <option> を追加できたり削除できたりするんだけど、 remove() はともかく add() が IE6 と Iceweasel で挙動が違うのでまいる。

select.add(new Option("text", "value"));

で最後に追加されるのはいいんだけど、途中に追加しようとすると、

// どちらも 2 番目に追加。
// IE6
select.add(new Option("text", "value"), 1);
// Iceweasel
select.add(new Option("text", "value"), select.options[1]);

ということになる。

今日きた JavaScriptクイックリファレンス 第5版—JavaScript1.5対応によると、

Select.add()
 void add(HTMLElement element,
          HTMLElement before)
      throws DOMException

となってるので、Iceweasel の方が正しそうではあるけど、 options に入ってない要素は指定出来ないので、 index だけで指定できた方が楽な気もする。

[]