2015-02-20 2 views
-1

У меня есть секундомер javascript, отображающий время в MM: SS (минуты: секунды). Если время достигает 59:59 MM: SS, то оно должно автоматически останавливаться (пока пользователь не нажмет «Очистить» и «Начать снова») вместо увеличения до 60:00, 60:01 и т. Д. Как установить максимальное время, чтобы предотвратить это ? Код ниже позволяет пользователю останавливать, запускать, очищать и сохранять секундомер, что является прекрасным минусом, ограничивающим максимальное время, разрешенное на javascript. Любая помощь или ссылки на документацию будут оценены.javascript секундомер предельное максимальное время

JavaScript:

<script type='text/javascript'> 
var clsStopwatch = function() { 

var startAt = 0; 
var lapTime = 0; 

var now = function() { 
return (new Date()).getTime(); 
}; 

this.start = function() { 
startAt = startAt ? startAt : now(); 
}; 

this.stop = function() { 
lapTime = startAt ? lapTime + now() - startAt : lapTime; 
startAt = 0; 
}; 

this.clear = function() { 
lapTime = 0; 
startAt = 0; 
}; 

this.time = function() { 
return lapTime + (startAt ? now() - startAt : 0); 
}; 
}; 

var x = new clsStopwatch(); 
var $time; 
var clocktimer; 

function pad(num, size) { 
var s = "0000" + num; 
return s.substr(s.length - size); 
} 

function formatTime(time) { 
var h = m = s = 0; 
var newTime = ''; 

m = Math.floor(time/(60 * 1000)); 
time = time % (60 * 1000); 
s = Math.floor(time/1000); 

newTime = pad(m, 2) + ':' + pad(s, 2); 
return newTime; 
} 

function show() { 
$time = document.getElementById('time'); 
update(); 
} 

function update() { 
$time.innerHTML = formatTime(x.time()); 
} 

function start() { 
clocktimer = setInterval("update()", 1); 
x.start(); 
} 

function stop() { 
x.stop(); 
document.getElementById('counter').value = formatTime(x.time()); 
clearInterval(clocktimer); 
} 

function save() { 
x.stop(); 
document.getElementById('counter').value = formatTime(x.time()); 
clearInterval(clocktimer);   
} 

function clearWatch() { 
x.stop(); 
x.clear(); 
clearInterval(clocktimer); 
update(); 
} 

</script> 

HTML/PHP:

<form action="save.php" method="POST"/> 
<h1>Time: <span id="time"></span> <br/></h1> 
<!--<input type="text" name-"time">--> 
<input type="hidden" value="" id="counter" name="counter"> 
<input type="button" value="Start" onclick="start();"> 
<input type="button" value="Stop" onclick="stop();"> 
<input type="button" value="Clear" onclick="clearWatch();"> 
<input type="submit" value="Save" onclick="save();"> 
+0

Вы не задали вопрос. – zerkms

+0

«У меня есть секундомер javascript, отображающий время в MM: SS (минуты: секунды). Если время достигает 59:59 MM: SS, то оно должно автоматически останавливаться (пока пользователь не нажмет Clear и не начнет снова) вместо увеличения до 60:00, 60:01 и т.д. " Как это не проблема, моя цель - указать максимальное время. Это должно быть ясно и в этой теме. – michelle

+0

Это не вопрос, потому что это не вопрос, извините. «Это должно быть ясно и в этой теме» --- мы понятия не имеем, почему вы в настоящее время застряли. Это просто 'if (время прошло> 60 минут) {...}' логика. – zerkms

ответ

1

Изменение функции времени, так что если время больше, чем значение, которое вы имеете, как максимум, то возвращается макс.

this.time = function() { 
    var duration = lapTime + (startAt ? now() - startAt : 0); 
    if (duration > max) { 
     duration = max; 
    } 
    return duration ; 
}; 

Заменить max с числовым значением, представляющим максимальную продолжительность.

Для 59:59 максимальное значение будет (1000 * 60 * 59) + (59 * 1000). Это связано с тем, что возвращаемое представление времени является миллисекундным значением, поэтому 59 минут плюс 59 секунд

+0

Спасибо, я дам этот снимок , Я больше не буду комментировать здесь, потому что это настолько токсично. – michelle

+0

Я думаю, что они просто пытались указать, что это просто оператор if в нужном месте, который является одним и тем же на большинстве языков с незначительными синтаксическими различиями. –

+0

Извините, что беспокоиться. Я использовал это.time = function() точно так, как показано выше, и установить длительность> 5 и продолжительность = 5, чтобы проверить его (я предполагаю, что это означает 5 секунд), однако счетчик не запускался, когда я нажал кнопку «Пуск». – michelle

Смежные вопросы