<div id="someDay"></div>
var startTimeId;
var zDate = new Date();
function startTime(){
seconds = zDate.getSeconds();
minutes = zDate.getMinutes();
startTimeID = setInterval(function(){
seconds++;
if(seconds>59) { seconds = 0; }
$('#someDay').html('seconds: '+seconds+' minutes: '+minutes);
},1000);
}
startTime();
$('#someDay').click(function(){
clearInterval(startTimeID);
zDate.setSeconds(45);
zDate.setMinutes(30);
startTime();
});
jsfiddle.net рулит: http://jsfiddle.net/Stasonix/PPhnG/
при клике как должно быть вам видно из листинга устанавливаются новые секунды и новые минуты, собственно говоря здесь может быть установлено все что имеет тип Date и может быть установлено.
итого, что имеем:
бегущие секунды и статические минуты, впрочем если добавить туда новые часы или дни они тоже будут статично отображаться в окне браузера.
Вопрос возможно ли сделать их "явно" новыми, т.е. чтобы отсчет от нового времени отображался так же как и секунды, т.е. не статично.
Хух, надеюсь что объяснил так что вы поймете.
п.с. секунды я сделал как инкремент ++, но это не выход, это скорее больше для понимания того как это должно работать.
Спустя 6 часов, 40 минут, 50 секунд (11.06.2012 - 06:12) redreem написал(а):
я мало что понял из того что же всетаки требуется, единственное скажу, что интервал в 1000ms будет срабатывать вовсе не каждую секунду, а "поразному". поэтому полюбому нужен контроль относительно системного времени.
Спустя 6 часов, 16 минут, 4 секунды (11.06.2012 - 12:29) Stasonix написал(а):
не надо контроль, мне атомная точность ни к чему, просто запустить fiddle и подождать 1 мин. и вы увидите что секунды изменяются, а минуты стоят. Но это еще пол беды, при клике нужно установить как-бы новый отсчет (не установить время на пк пользователя, как это мне на других форумах отвечают, а именно в самом скрипте установить новый отсчет). Просто задачка из цикла "это что-то новое" поэтому мало кто понимает вообще о чем речь.
Спустя 21 минута, 13 секунд (11.06.2012 - 12:50) redreem написал(а):
ну вот так работает:
var startTimeId;
function startTime(){
zDate = new Date();
seconds = zDate.getSeconds();
minutes = zDate.getMinutes();
startTimeID = setInterval(function(){
seconds++;
if (seconds > 59) {
seconds = 0;
minutes++;
if (minutes > 59) {
minutes = 0;
}
}
$('#someDay').html('seconds: '+seconds+' minutes: '+minutes);
},1000);
}
startTime();
$('#someDay').click(function(){
clearInterval(startTimeID);
zDate.setSeconds(45);
zDate.setMinutes(30);
startTime();
});
Спустя 22 минуты, 25 секунд (11.06.2012 - 13:12) Stasonix написал(а):
я тоже так сначала думал выход, но часы, годы, месяца, дни недели все связать надо и т.п. вот в чем "подвох", грамотному кодеру это под силу, на сколько мне это под силу... надеюсь что разберусь.
Спустя 15 минут, 22 секунды (11.06.2012 - 13:28) redreem написал(а):
сформулируй задачу более конкретно. пока ниче не понятно.
Спустя 6 минут, 12 секунд (11.06.2012 - 13:34) Stasonix написал(а):
Вот уже проясняется:
а задача такая сделать чтобы при клике установилось новое время, там будет еще дата, год, месяц, день недели и отсчет велся именно от новой даты.
var startTimeId;
var zDate = new Date();
function startTime(){
seconds = zDate.getSeconds();
minutes = zDate.getMinutes();
hours = zDate.getHours();
startTimeID = setInterval(function(){
seconds++;
if(seconds>59) { seconds = 0;
minutes++;
if (minutes > 59) {
minutes = 0;
hours++;
if ( hours > 23 ) {
hours = 0;
}
}
}
$('#someDay').html(' hours: '+hours+' min: '+minutes+ ' sec: '+seconds);
},1000);
}
// starting our time
startTime();
// click on the element to set new seconds and minutes
$('#someDay').click(function(){
clearInterval(startTimeID);
zDate.setSeconds(45);
zDate.setMinutes(30);
startTime();
});
​
а задача такая сделать чтобы при клике установилось новое время, там будет еще дата, год, месяц, день недели и отсчет велся именно от новой даты.