Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Обратный таймер (https://javascript.ru/forum/misc/23957-obratnyjj-tajjmer.html)

Nekromancer 13.12.2011 16:59

Livanderiaamarum,
Я бы не стал работать с вами и вашим кодом, он не читабелен вообще и от этого ужасен. Пусть даже возможно и правильный.

Magneto 13.12.2011 17:26

Солидарен с Nekromancer.

Livanderiaamarum 13.12.2011 18:08

Цитата:

Сообщение от Nekromancer (Сообщение 142504)
Livanderiaamarum,
Я бы не стал работать с вами и вашим кодом, он не читабелен вообще и от этого ужасен. Пусть даже возможно и правильный.

вы где-то видели мой код О_О??? когда успели?
п.с. аа ну да. у нас же разные уровни)) в том примере я не обьяснял человеку как нужно сделать. а сделал самый оптимальный и гибкий вариант) и дал ему интерфейс. Вам естественно ничего не понятно) вы же не понимаете как устроен этот паттерн. советую подтянуть ваш javascript чтобы работать со мной на одном уровне)

trikadin 13.12.2011 18:21

Цитата:

Сообщение от Livanderiaamarum
советую подтянуть ваш javascript чтобы работать со мной на одном уровне)

Судя, например, по этому, до вашего уровня нам придётся деградировать. ;)

Livanderiaamarum 13.12.2011 18:26

Цитата:

Сообщение от trikadin (Сообщение 142534)
Судя, например, по этому, до вашего уровня нам придётся деградировать. ;)


но ведь там знание событий браузеров, а тут javascript/ связь?

аа, вы как я понимаю только браузерный js учили с детства))? только сайтики клепать способны да)? наверное каждый косяк ИЕ выучили)? это похвально)
даже наверное не знаете что js бывает не только в браузерах)? да о чем я говорю. не тот уровень)

Aetae 13.12.2011 18:34

Ребята давайте не будем кормить троля. Этот конечно потоньше чем некоторые но всё же.)

Livanderiaamarum 13.12.2011 18:42

Цитата:

Сообщение от Aetae (Сообщение 142536)
Ребята давайте не будем кормить троля. Этот конечно потоньше чем некоторые но всё же.)

некоторые? такие как ты О_О ?

nerv_ 14.12.2011 18:56

Вроде как слепил. Для начала обычный таймер
<html>
	<head>
		<meta charset="utf-8">
		<style type="text/css">
			body { background-color:#ffcc33; margin:0px; }
			div { color:#0033cc; font:bold 12pt Tahoma; margin:15px; }
		</style>
		<script type="text/javascript">
			var Timer = (function() {
				var now, tm, offset = 0, i = 0;
				return function() {
					switch(arguments[0]) {
						case true:
							if(offset === 0) {
								now = new Date();
								offset = now.getTimezoneOffset() * 60000;
							}
							else {
								return ;
							}
							break;
						case false:
							if(offset !== 0) {
								clearTimeout(arguments.callee);
								i = tm.getTime() - offset;
								offset = 0;
							}
					}
					if(offset !== 0) {
						tm = new Date((new Date()).getTime() - now.getTime() + offset + i);
						document.getElementsByTagName('div')[0].innerHTML = tm.toLocaleTimeString();
						setTimeout(arguments.callee, 500);
					}
				}
			})();
		</script>
	</head>
	<body>
		<input type="button" onclick="Timer(true)" value="Start">
		<input type="button" onclick="Timer(false);" value="Pause">
		<div>Div HTML</div>
	</body>
</html>

nerv_ 14.12.2011 20:31

Обратный таймер. Наверное можно сделать проще, но у меня получилось так :)
//в этой строке время выставляется в часах(0), минутах(0), секундах(30) и миллисекундах(0)
var x = (0 * 3600000) + (0 * 60000) + (30 * 1000) + 0;

<html>
	<head>
		<meta charset="utf-8">
		<style type="text/css">
			body { background-color:#ffcc33; margin:0px; }
			div { color:#0033cc; font:bold 12pt Tahoma; margin:15px; }
		</style>
		<script type="text/javascript">
			var backTimer = (function() {
				var x = (0 * 3600000) + (0 * 60000) + (30 * 1000) + 0;
				var now, tm, offset = 0, i = 0;
				return function() {
					switch(arguments[0]) {
						case true:
							if(offset === 0) {
								now = new Date();
								offset = now.getTimezoneOffset() * 60000;
							}
							else {
								return ;
							}
							break;
						case false:
							if(offset !== 0) {
								clearTimeout(arguments.callee);
								i = x - tm.getTime() + offset;
								offset = 0;
							}
					}
					if(offset !== 0) {
						tm = new Date((new Date()).getTime() - now.getTime() + i);
						if(tm.getTime() < x) {
							tm.setTime(x - tm.getTime() + offset);
							document.getElementsByTagName('div')[0].innerHTML = tm.toLocaleTimeString();
							setTimeout(arguments.callee, 500);
						}
						else {
							clearTimeout(arguments.callee);
							tm.setTime(0 + offset);
							document.getElementsByTagName('div')[0].innerHTML = tm.toLocaleTimeString();
							offset = 0;
							i = 0;
						}
					}
				}
			})();
		</script>
	</head>
	<body>
		<input type="button" onclick="backTimer(true)" value="Start">
		<input type="button" onclick="backTimer(false);" value="Pause">
		<div>Div HTML</div>
	</body>
</html>

trikadin 14.12.2011 20:34

Цитата:

Сообщение от nerv_
case true:
                            if(offset === 0) {
                                now = new Date();
                                offset = now.getTimezoneOffset() * 60000;
                            }
                            else {
                                return ;
                            }
                            break;
                        case false:
                            if(offset !== 0) {
                                clearTimeout(arguments.callee);
                                i = x - tm.getTime() + offset;
                                offset = 0;

}

А зачем case? if (arguments[0]) не?


Часовой пояс GMT +3, время: 14:05.