есть такая штука как диалоговые окна. А еще если много функциональности на одной страничке, стоит ее на несколько разбить
|
Спасибо :)
|
Народ, подскажите плз как исправить такой косяк... Делаю органайзер для сайта, на странице добавления нового события есть форма из трёх раскрывающихся списков - 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. Подскажите плз как исправить ситуацию. =\ |
Даж вдумываться не хочу, есть же объект Date()
Дней в месяце m годa y: var y=2011,m=2; alert(new Date(y,m,0).getDate()) Как это работает: Объект Date принимает значение месяца от 0 до 11, т.о. мы задаём нужным_нам+1, при этом ставя день месяца в 0 мы заставляем его принимать значение: последний день месяца, предыдущего заданнному. |
Freakmeister, для кроссбраузерности необходимо использовать метод add(). Вот, посмотрите пример.
function foo() { var optn; var sel = document.getElementById("month"); for (var i = 0; i < 5; i++) { optn = document.createElement("option"); optn.text = i; optn.value = i; try { sel.add(optn, null); } catch(e) { sel.add(optn); } } } <form action="#"> <input type="button" value="add options" onclick="foo();" /> <select id="month"></select> </form> |
Часовой пояс GMT +3, время: 18:12. |