Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Таймер


Автор: Paola 18.1.2004, 13:53
Уважаемые форумчане !
Помогите чайнику. У меня проблема следующего плана:
Хотелось бы что бы на странице показывалось сколько пользователь находится на ней в формате мм:сс. С помощью двух опреаторов setInterval элементарно получается создать два счетчика: один считает минуты, другой секунды. А вот как их совместить друг с другом не пойму. Условие: нужно создать такие часики только с sеtTimeout или setInterval.
Нужно что бы когда счетчик секунд сделал первый круг, он обнулялся, а на счетчике минут появлялось 1 мин, а счетчик секунд считал бы дальше. Реально ли это сделать в JavaScript?
С уважением Ольга

Автор: Sardar 18.1.2004, 15:18
Достаточно считать только секунды, можно так:
Код

<script language="Javascript" type="text/javascript">
mins=59;
secs=57;
function time() {
if(++secs>=60) {
 secs=0;
 if(++mins>=60) {
  mins=0;
  document.all.min.style.background="#ff0000"; //время вышло
 }
}
document.all.min.innerText=mins;
document.all.sec.innerText=secs;
window.setTimeout("time();",1000);
}
</script>
</head>
<body onLoad='window.setTimeout("time();",1000);'>
<table>
<tr><td id=min>0</td><td id=sec>0</td></tr>
</table>

Автор: Paola 18.1.2004, 23:13
Спасибо огромное, Sardar.
Перед тем как посмотреть ответил ли мне кто нибудь я уже поняла, что можно делать только один счетчик, а второй сделать зависимым от него. Вот только как это реализовать сама не додумалась ))).
Я немножко переделала Ваш код. А то при начальных условиях в Вашем коде сначала не было нулей. Вобщем вот что получилось ))) :

<html>
<head>
<title>Таймер</title>
<script>
setTimeout("time()",1000);
mins=0;
secs=0;
function time() {
secs++;
if(secs>59) {
secs=0;
mins++;
if(mins>59) {
mins=0;
}
}
sec.innerHTML=zero(secs);
mint.innerHTML=mins;
setTimeout("time();",1000);
}

function zero(num) {
return (num < 10)? "0" + num:num;
}
</script>
</head>
<body'>
<table>
<tr><td>Вы находитесь на этой странице</td><td id="mint">0</td>
<td>мин</td><td id="sec">0</td><td>сек</td></tr>
</table>
</body>
</html>




Еще раз спасибо )))


Автор: Sardar 18.1.2004, 23:30
С mins=59; secs=57; я хотел показать что пользователь может находится на странице больше чем один час. Впрочем тебе решать smile.gif.
Используй innerText если меняешь просто текст.

Автор: adamant 5.3.2006, 22:53
А как сделать так, что бы считать в обратном направлении? Например...
Начальное положение = 59м : 59с
А после достижения 00 : 00
Счётчик сбрасывался сново на начальное положение?

Автор: 12345c 5.3.2006, 23:22
 http://js2.ru/example/JsPrimeryCode-46.htm

(При достижении 00:00 сменится час, но его можно не показывать.) 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)