Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


HTML код: Выделить весь код
<html> <head> <title>Демонстрация посложнее</title> <script> var final = {'year':2008, 'month':12, 'day':31, 'hour':23, 'min':59, 'sec':59}; // это дата и время, до которых надо считать var months = [31,28,31,30,31,30,31,31,30,31,30,31]; // количество дней в месяцах. В феврале поставил 28. Пусть будет:) var d = new Date(); var year = final.year - d.getFullYear(); // вычисляем, сколько надо лет отсчитывать var month = final.month - d.getMonth() - 1; if (year && final.month < d.getMonth()) month += 12; // если количество оставшихся лет больше нуля, увеличиваем месяцы на 12. Ну по логике так надо сделать var days = final.day - d.getDate() - 1; if (month && final.day < d.getDate()) { days += months[month-1]; // если месяцев больше 0, то количество дней увеличивается на количество дней в предыдущем месяце month--; } var hour = final.hour - d.getHours(); var min = final.min - d.getMinutes(); var sec = final.sec - d.getSeconds(); var timer; // ссылка на таймер, который потом можно будет остановить // это необязательно, просто мне нравится начинать все свои скрипты с main() :) // вызов её прописывается в <body onload="main()"> function main() { timer = window.setInterval("showTime()", 1000); // каждые 1000 мс вызываем функцию showTime() } function showTime() { sec--; // каждый вызов функции приводит к уменьшению на 1 секунду if (sec < 0) // если секунды ушли в минус, { sec = 59; // возвращаем их в 59 min--; // и уменьшаем минуту if (min < 0) // если минуты ушли в минус { min = 59; // возвращаем их в 59 hour--; // и уменьшаем час на единицу if (hour < 0) // а уж если и час в минус ушёл { hour = 23; day--; if (day < 0) { day = months[month-1]; month--; if (month < 0) { month = 12; year--; if (year < 0) { window.clearInterval(timer); // значит хватит считать, снимаем таймер, чтоб функция больше не вызывалась document.getElementById("showTime").innerHTML = "<span style='color:red'>Армагеддон наступил!</span>"; // и выводим красными буквами приветствие:) } } } } } } // окончание вычисления такое: text = "До армагеддона осталось "; switch(year) { case 0: text += "0 лет "; break; case 1: text += "1 год "; break; case 2: case 3: case 4: text += year + " года "; break; default: text += year + " лет "; break; } switch(month) { case 0: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: text += month + " месяцев "; break; case 1: text += month + " месяц "; break; case 2: case 3: case 4: text += month + " месяца "; break; } switch(days) { case 1: case 21: case 31: text += days + " день "; break; case 2: case 3: case 4: case 22: case 23: case 24: text += days + " дня "; break; default: text += days + " дней "; break; } text += " и вот столько ещё времени: " + hour + ":"; if (min.toString().length == 1) text += "0"; text += min + ":"; if (sec.toString().length == 1) text += "0"; text += sec; document.getElementById("showTime").innerHTML = text; } </script> <body onload="main(); showTime();"> <div id="showTime">Сюда будет вписываться текст</div> </body> </html>

Я не гарантирую полную правильность работы - может быть дни или месяцы или ещё чего будет считать неправильно, но... Уже за полночь, а мне спать осталось меньше 8 часов-ня
На первый взгляд всё работает. Скрипт-то, в общем, не сложный.

Отправлено: 22:15, 26-06-2008 | #10