Причина, по которой это не работает, отсутствует в вашем фрагменте кода:
<OPTION onclick=javascript:display_year2(2009); value=2009>
Option.onclick не является событием, которое обычно ожидается, но происходит в Firefox. Обычный способ обнаружения изменений в значениях выбора - через Select.onchange.
Также вам не нужно включать «javascript:» в обработчики событий, они не являются URL-адресами (также никогда не используйте javascript: URL-адреса). Кроме того, укажите ваши значения атрибута; это всегда хорошая идея, и она требуется, когда вы начинаете включать пунктуацию в значения. Кроме того, придерживайтесь строк для своих значений - вы вызываете display_year2 с Number, но option.value всегда является String; попытка работать со смешанными типами данных - это путаница.
В итоге:
<select onchange="display_year2(this.options[this.selectedIndex].value)">
<option value="2009">2009</option>
...
</select>
Другие вещи:
var i;
for(i=document.form.year2.options.length-1;i>=0;i--)
{
document.form.year2.remove(i);
}
Вы можете покончить с циклом, написав в options.length. Также лучше избегать ссылок на имена элементов непосредственно из документов - используйте коллекцию document.forms [] или getElmentById:
var year2= document.getElementById('year2');
year2.options.length= 0;
Также:
var optn = document.createElement("OPTION");
optn.text = x;
optn.value = x;
document.form.year2.options.add(optn);
HTMLCollection.add не является стандартным методом DOM. Традиционный способ старой школы это сделать:
year2.options[year2.options.length]= new Option(x, x);