Параметры динамического выпадающего списка не отображаются в IE7

#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");