Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Проблема с getMinutes() (https://javascript.ru/forum/dom-window/48581-problema-s-getminutes.html)

Veterinar 09.07.2014 10:50

Проблема с getMinutes()
 
Подскажите, умоляю!!!

Вообще уже чуть не рехнулся... более идиотской "проблемы" не встречалось никогда. Всего навсего счетчик времени.

Когда секунды отматываются до 0, кто-то спрыгивает с ума: либо я, либо браузер, либо компутер, но начинается отсчёт минут с той же скоростью, как и секунды...

var dif=35;
td = new Date();
function Timer(){
	dif = dif-1;
	td.setSeconds(dif);
	d = 0; //td.getDate();
	h = td.getHours();
	m = td.getMinutes();
	s = td.getSeconds();
	document.getElementById('countbox').innerHTML='Осталось:'+
	' дней:'+((d<10)?'0':'')+d+
	' часов:'+((h<10)?'0':'')+h+
	' мин:'+((m<10)?'0':'')+m+
	' сек:'+((s<10)?'0':'')+s+
	' dif='+dif;
};
setInterval(Timer, 1000);


<body style="color: #0264d0">
<div id="countbox">тут время</div>
</body>


Вся сводящая с ума мутотень тут: http://ledagregator.ru/timer.html

BETEPAH 09.07.2014 11:40

Как Вы думаете, что будет делать td.setSeconds(-1) ?

MallSerg 09.07.2014 11:44

Что должна делать td.setSeconds(dif) ?
упс =)

Veterinar 09.07.2014 11:45

Уважаемый, BETEPAH!
Я уже, как говорил - умом тронулся. Так что думать не в состоянии.
Предполагаю, что она должна изменить время на указанное количество секунд.

ЗЫ: При достижении счетчиком 0 я его переустанавливал в 59, но это, увы, не помогает. И очень хочется написать матом...

BETEPAH 09.07.2014 11:48

Veterinar,
устанавливая секунды на -1, Вы тем самым откручиваете 1 минуту. Каждую итерацию.

Veterinar 09.07.2014 11:51

BETEPAH, до этого я допёр ))))

Но, скажите, пожалуйста, с какого рожна, при установке счетчика в заново в 59, минуты продолжают херачить со скоростью секунд?

Спасибо. Извините за "французский" :)

BETEPAH 09.07.2014 11:56

Цитата:

Сообщение от Veterinar
скажите, пожалуйста, с какого рожна, при установке счетчика в заново в 59

Покажите код.
P.S. я так понимаю, это спортивный интерес? Так как реализация самого таймера ужасна и при желании здесь, на форуме можно найти с десяток таймеров.

Veterinar 09.07.2014 12:02

BETEPAH, спасибо!

Хоть и стыдно до невозможности, но тот бред который сейчас сваял вот тут: http://ledagregator.ru/tim.html

Там всего 15 строчек...

BETEPAH 09.07.2014 12:16

там все работает. Тот трюк, который сделали с минутами, можно было бы с секундами сделать и не наворачивать лишний код.
Т.е. заменить
dif = dif-1;
	if(dif<0){
		td.setMinutes(td.getMinutes()-1);
		dif=59;
	};
	td.setSeconds(dif)

на
td.setSeconds(td.getSeconds()-1)

а изначальные секунды устанавливать вне функции таймера.

Veterinar 09.07.2014 12:18

BETEPAH, точно!
Спасибо!!!
А я уже умом рёхнулся...


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