#javascript #drop-down-menu
#javascript #выпадающее меню
Вопрос:
У нас есть выпадающий список, который динамически заполняется с помощью javascript (ниже). Но это не отображается в IE7.
Это код, который заполняет параметры:
<script language="javascript" type="text/javascript">
window.onload = function() {
var today= new Date();
var year= today.getFullYear();
var val =0;
t2= 51;
grad_yr = document.getElementById("grad_yr");
grad_yr.options[0] = new Option("Year",val,false,false);
var y=year;
var yy=y;
for (var i=1; i <t2 ; i ) {
grad_yr.options[i] = new Option(y,y);
y=yy-1;
yy--;
}
}
</script>
Это HTML:
<select name="grad_yr" id="grad_yr"></select>
Что может быть не так?
РЕДАКТИРОВАТЬ: Ок, неважно. По-видимому, список действительно заполняется. Просто у нас есть другой javascript, который как бы перемещает положение параметров, поэтому он выглядит скрытым. В любом случае спасибо!
Комментарии:
1.
var y=yy ... y=yy-1; yy--;
у меня возникла аневризма.
Ответ №1:
Вы создали конфликт имен, используя одно и то же имя глобальной переменной для вашей grad_yr
переменной и элемента select. Закомментируйте строку, в которой вы извлекаете свой grad_yr
из документа по идентификатору, поскольку в этом нет необходимости:
//grad_yr = document.getElementById("grad_yr");
grad_yr.options[0] = new Option("Year", val, false, false);
Или, если вам действительно нужно иметь ссылку на переменную, просто дайте вашей переменной другое имя, например, это (или что-то подобное):
grad_yrVar = document.getElementById("grad_yr");
grad_yrVar.options[0] = new Option("Year", val, false, false);
...
for (var i = 1; i < t2; i ) {
grad_yrVar.options[i] = new Option(y, y);
y = yy - 1;
yy--;
}
… и это должно сработать.
Комментарии:
1. Что происходит сейчас, так это то, что он отображается в IE7 (выпадающий список), но без имени выбора (которое является «Годом»). В IE8 отображается имя выбора, но выпадающий список по-прежнему не заполняется.
2. Hmmm….it работает у меня в IE 7 и 8. Используете ли вы «Режим совместимости» и инструменты разработчика (клавиша F12) в IE 8 для тестирования? Что касается дополнительной мысли: измените свои
grad_yr.options[i] = new Option()
инструкции наgrad_yr.add(new Option())
вместо этого и посмотрите, работает ли это…
Ответ №2:
Попробуйте это
var grad_yr = document.getElementById("grad_yr");