Динамическое создание селект-списка с количеством дней для выбранного месяца и года. Селект-список с количеством дней для февраля формируется с учетом високосного (29 дней) и невисокосного (28 дней) годов.

Создаем вручную селект-список для выбора месяца:


<form name="mySel" >
<select type="menu" name="month" id="month" onchange="loadDay();">...
<option value="0">январь
<option value="1">февраль
<option value="2">март
<option value="3">апрель
<option value="4">май
<option value="5">июнь
<option value="6">июль
<option value="7">август
<option value="8">сентябрь
<option value="9">октябрь
<option value="10">ноябрь
<option value="11">декабрь
</select>

Далее создаем оболочку для селект-списка с количеством дней:


<select type="menu" name="days" id="days">...

</select>

Используя HTML тэги создаем оболочку, а селект-список для выбора года генерируем автоматически с помощью JavaScript:


<select type="menu" name="year" id="year" onchange="loadYear()" >...

<script>
// здесь указываем с какого и по какой год должно быть в списке
for (i = 2000; i <= 2013; i++) {
	document.mySel.year.innerHTML += "<option value='"+i+"' />"+i;
}
</script>

</select>
</form>

Внутри тэгов script создаем функцию, подсчитывающую количество дней в выбранном месяце и запускаем ее:


function loadDay() {
	document.mySel.days.innerHTML = "";

	var month = document.mySel.month.selectedIndex;
	var year = document.mySel.year.value;
	var usrDate = new Date (year, month , 1);
	var nextMonth = new Date (year, month+1, 1);
	var oneHour = 1000 * 60 * 60;
	var oneDay = oneHour*24;
	var monthEnd = Math.ceil((nextMonth.getTime() - usrDate.getTime() - oneHour)/oneDay);

	for (i = 1; i <= monthEnd ; i++ ) {
		document.mySel.days.innerHTML += "<option />"+i;
	}
}
loadDay();

Далее внутри тех же тегов, где создана функция loadDay, создаем функцию, проверяющую правильное количество дней для февраля, в зависимости от високосного и невисокосного годов:


function loadYear() {
	if (document.mySel.year.value%4 == 0 && document.mySel.month.selectedIndex == 1) {
		if (document.mySel.days.length == 29) return;
			else document.mySel.days.innerHTML += "<option />"+29;
	} else if (document.mySel.month.selectedIndex == 1) {
		if (document.mySel.days.length == 28) {
			return;
		} else {
			document.mySel.days.innerHTML ="";
			for (i = 1; i < 29 ; i++ ) {
				document.mySel.days.innerHTML += "<option />"+i;
			}
		}
	} else return;
}

Все элементы скрипта, тэги со списком и пр. добавлять в HTML-документ в указанной последовательности. О возникновении проблем с запуском скрипта, а также предложения по модификации скрипта и конструктивную критику просьба писать по адресу freeden_codomaza@mail.ru.

captcha

Что такое облачное хранилище и как им пользоваться? Что такое облачное хранилище и как им пользоваться?
Как выбрать пластины для теплообменника? Пластины для теплообменника
Изучение языка ECMAScript: основа современной веб-разработки История языка ECMAScript
Как добавить комментарий в HTML? HTML примеры
Apple позволит разработчикам распространять приложения напрямую с их сайтов Apple позволит разработчикам распространять приложения напрямую с их сайтов
jQuery 4.0 сокращает поддержку браузеров, удаляет API Новое в jQuery 4.0
Как продвинуть Telegram-канал: с нуля до результата Как продвинуть канал в Telegram с нуля?
Получить IT профессию с нуля: академия Eduson Получить IT профессию с нуля
Перспективы эволюции SEO: встречайте будущее продвижения в поисковых системах Будущее SEO-продвижения
Создание сайтов в Алматы: агентство site-promote.com Разработка сайта компании
Антипкин Михаил Сергеевич о метавселенной, открывающей безграничные возможности для инноваций и экспериментов Антипкин Михаил Сергеевич о метавселенной
Сёрфинг с браузером FraudFox: исчерпывающее руководство Сёрфинг с браузером FraudFox
Где найти лицензионные ключи активации к ПО? Где найти лицензионные ключи активации к ПО?
Курсы веб дизайна: обучение онлайн Курсы веб дизайна: обучение онлайн
Как продлить срок службы бытовой техники? Как продлить срок службы бытовой техники?
Основы VPS/VDS: что нужно знать перед арендой? Основы VPS/VDS: что нужно знать перед арендой?
Откройте для себя азарт Mostbet KZ - ведущего онлайн-казино для геймеров Откройте для себя азарт Mostbet KZ - ведущего онлайн-казино для геймеров
Топ-10 игр для Android стоимостью менее $5 Топ-10 игр для Android стоимостью менее $5
Проверка авто в базе ГИБДД перед покупкой Проверка авто в базе ГИБДД перед покупкой
Бизнес-психология в онлайн-институте Smart Бизнес-психология в онлайн-институте Smart