Тема: InnerHTML & IE
Показать сообщение отдельно
  #23 (permalink)  
Старый 15.01.2011, 22:40
Аватар для Freakmeister
Аспирант
Отправить личное сообщение для Freakmeister Посмотреть профиль Найти все сообщения от Freakmeister
 
Регистрация: 15.01.2011
Сообщений: 61

Народ, подскажите плз как исправить такой косяк... Делаю органайзер для сайта, на странице добавления нового события есть форма из трёх раскрывающихся списков - day, month и year:



Понятно, что в каждом месяце определённое количество дней и я делал, чтобы при смене месяца, просчитывалось количество дней в этом месяце и менялось содержимое списка day. Вот скрипт полностью (сильно не пинайте, я новичёк в JS):

<script type='text/javascript'>

function isLeapYear(year) {   // узнаём високосный ли год
 if (year % 4 == 0) return true
 return false
}

function getDays(month, year) {   //узнаём сколько дней в месяце
 var ar = new Array(12)
 ar[1] = 31 // Январь
 ar[2] = (isLeapYear(year)) ? 29 : 28 // Февраль
 ar[3] = 31 // Март
 ar[4] = 30 // Апрель
 ar[5] = 31 // Май
 ar[6] = 30 // Июнь
 ar[7] = 31 // Июль
 ar[8] = 31 // Август
 ar[9] = 30 // Сентябрь
 ar[10] = 31 // Октябрь
 ar[11] = 30 // Ноябрь
 ar[12] = 31 // Декабрь
 return ar[month]
}

function gethtml(numb, selected) {    //получаем вёрстку инпута
 var b;
 var i;
 var r;
 var s;
   for (i=1; i<=numb; i++){
     r=''+i
       if (r.length<2) {  //добавляем 0 вначало, если число однозначное
       r='0'+r;
       }
     s=''
     if (i==selected) {  //выставляем день, который был выставлен вначале
     s=' selected'
     }
   b = b+\"<option value='\"+r+\"'\"+s+\">\"+r+\"</option>\"
   }
 return b
}

function countday() {   //главная функция, которая запускает все остальные
 var day = document.getElementById('day');
 var s=day.value;
 var month = document.getElementById('month');
 var year = document.getElementById('year');
 var a = getDays(month.value, year.value);
 day.innerHTML = '';
 day.innerHTML = gethtml(a, s);
}
</script>


При смене месяца вызывается функция countday(). Всё отлично работает во всех браузерах кроме IE - в day получается пустой список. Я стал досконально перебирать код и выяснил, что innerHTML в IE вообще не работает, по крайней мере на селектак. Даже если для простоты вместо всего вышеизложенного написать так:
function countday() {
var day = document.getElementById('day');
day.innerHTML = '<option>test</option>';
}

IE всё-равно возвращает в day пустой список, а другие браузеры возвращают test. Подскажите плз как исправить ситуацию. =\

Последний раз редактировалось Freakmeister, 15.01.2011 в 22:42.
Ответить с цитированием