Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.06.2011, 01:25
Аватар для GRAF-8269
Интересующийся
Отправить личное сообщение для GRAF-8269 Посмотреть профиль Найти все сообщения от GRAF-8269
 
Регистрация: 31.05.2011
Сообщений: 14

Помогите со скриптом обратного отсчета
Всем привет. Знаю, что такие темы уже были, но ответа на свой вопрос я не нашел. В общем есть код, который отсчитывает время до определенного дня. Срок указывается в секундах (в другом скрипте).

function C3Counter(id, opt) {
		
			this.options = {
				stepTime: 60, // not used
				format: "dd:hh:mm:ss", // not used 
				startTime: "00:01:55:59",
				digitImages: 1,
				digitWidth: 30,
				digitHeight: 44,
				digitSlide : true,
				digitSlideTime : 200,
				digitImageHeight : 484,
				digitAnimationHeight : 44, 
				timerEnd: function(){},
				image: "digits.png", 
				updateInterval : 1000
				
			};
			
			
			
			var s;
			
		 	if (typeof opt != "undefined") {
				for (s in this.options) {
					if (typeof opt[s] != "undefined") {
						this.options[s] = opt[s];
					}
				}
			} 
			
			
			if (String(options.startTime).indexOf(":") == -1) {
				options.tempStartTime = options.startTime;
			} else {
				//TODO - does not convert time with : to seconds to count
				var td = new Date(options.startTime);
			}
	

			this.pad2 = function(number) {
   				return (number < 10 ? '0' : '') + number;
			}

			
			
			var timer = setInterval( "this.updateCounter()", options.updateInterval);
			var startTime = new Date().getTime();
			var secNo = 0;
			var timerSingle = new Array();
			var dc = 0;
			var digits = new Array();
			var d = new Date();
			var lastTime = d.getTime();
			
			
			this.calculateTime = function() {
				var tempTime = options.tempStartTime;
				if (String(options.tempStartTime).indexOf(":") == -1) {  
					var seconds=Math.round(options.tempStartTime % 60);
					options.tempStartTime=Math.floor(options.tempStartTime/60);
					var minutes=Math.round(options.tempStartTime % 60);
					options.tempStartTime=Math.floor(options.tempStartTime/60);
					var hours=Math.round(options.tempStartTime % 24);
					options.tempStartTime=Math.floor(options.tempStartTime/24);
					var days=Math.round(options.tempStartTime);
					options.timeStr = this.pad2(days)+this.pad2(hours)+this.pad2(minutes)+this.pad2(seconds);

				}
				
				var currTime = new Date().getTime();
				var diff = currTime - startTime;
				
				options.tempStartTime = options.startTime - Math.round(diff/1000);
			}
			
			
			this.calculateTime();
			
			
			for (dc=0; dc<8; dc++) {
				digits[dc] = { digit: this.options.timeStr.charAt(dc)};
				
			
				$("#"+id).append("<div id='digit"+dc+"'  style='position:relative;float:left;width:"+this.options.digitWidth+"px;height:"+this.options.digitHeight+"px;overflow:hidden;'><div class='digit' id='digit-bg"+dc+"' style='position:absolute; top:-"+digits[dc].digit*this.options.digitAnimationHeight+"px; width:"+this.options.digitWidth+"px; height:"+this.options.digitImageHeight+"px; '></div></div>");
				
				
				if (dc % 2 == 1 && dc < 6) {
					$("#"+id).append("<div class='digit-separator' style='float:left;'></div>");
				}
			}
			
			$("#"+id).append("<div style='clear:both'></div>");

			this.animateDigits = function() {
				for (var dc=0; dc<8; dc++) {
					digits[dc].digitNext = Number(this.options.timeStr.charAt(dc));
					digits[dc].digitNext = (digits[dc].digitNext + 10)%10;
					
					var no = dc;

					if (digits[no].digit == 0) $("#digit-bg"+no).css("top", -this.options.digitImageHeight+this.options.digitHeight + "px");
					if (digits[no].digit != digits[no].digitNext) {
						$("#digit-bg"+no).animate( { "top" : -digits[no].digitNext*options.digitHeight+"px"}, options.digitSlideTime);
						digits[no].digit = digits[no].digitNext;
					}
					
				}
				
				var end = this.checkEnd();
			}
			
		
			
			this.checkEnd = function() {
				for (var i = 0; i < digits.length; i++) {
					if (digits[i].digit != 0) {
						return false;
					}
				}
				clearInterval(timer);
				this.options.timerEnd();
				return true;
			}
			
			this.updateCounter = function() {
				d = new Date();
		
				if ((d.getTime() - lastTime) < (options.updateInterval - 50)) {
					return;
				}
				lastTime = d.getTime();
				
				this.calculateTime();
				this.animateDigits();
			}
			
		}


он берет секунты из этого кода
<script type="text/javascript">
// Default options 
C3Counter("counter", { startTime : 223966 });
</script>


Вопрос: объясните мне, как сделать уменьшение секунд? А то у меня получается, что каждый раз одинаковый отсчет сначала идет.
Стандартными методами хостинга (без PHP) не обойтись: там есть операторы типа <? 3+4 ?> выдаст число 7, но если это html-единица со значком "<", код рушится и получается непонятно что. Помогите, пожалуйста, а то сделал страницу всю, а на счетчик обратил внимание в последнюю очередь, а то уже ничего (на ходиках 1 час 23 минуты по Москве) не соображаю спасибо заранее
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
таймер обратного отсчёта , помогите дописать ДимаЯл Элементы интерфейса 5 08.01.2011 10:20
Графический таймер обратного отсчета bobri4 Элементы интерфейса 4 24.08.2009 22:50
помогите с скриптом $12ANDRE12$ Firefox/Mozilla 2 12.05.2009 21:46
Помогите со скриптом Pilageen Общие вопросы Javascript 5 13.04.2009 14:13
таймер обратного отсчета Mignon Общие вопросы Javascript 1 07.06.2008 17:16