реализовать toggle события click
При клике на start включается секундомер и меняется значение кнопки на pause. Как сделать, чтобы при повторном нажатии значение кнопки снова менялось на start и секундомер останавливался на текущем значении?
<h2 class='stopwatch'>0</h2>
<button class='btn-toggle'>Start</button>
var i = 0,
timer;
document.querySelector('.btn-toggle').addEventListener('click', start, false);
function start() {
timer = setInterval(increment, 1);
document.querySelector('.btn-toggle').innerHTML = 'Pause';
}
function increment() {
i++;
document.querySelector('.stopwatch').innerHTML = i/1000;
}
function stop() {
clearInterval(timer);
}
Вот для удобства http://jsbin.com/kizavuwoxa/1/edit?html,js,output Спасибо за ответы, напутствия, направления! |
ivanWantsToKnow,
<h2 class='stopwatch'>0</h2>
<button class='btn-toggle'>Start</button>
<script>
var i = 0,
timer,
n = 1;
document.querySelector('.btn-toggle').addEventListener('click', start, false);
function start() {
document.querySelector('.btn-toggle').innerHTML = n ? (timer = setInterval(increment, 1), 'Pause') : (stop(), 'Start');
n ^= 1;
}
function increment() {
i++;
document.querySelector('.stopwatch').innerHTML = i / 1000;
}
function stop() {
clearInterval(timer);
}
</script>
|
рони,
Спасибо большое! Только я не вполне понял как получается, что мы записываем timer и строку 'Pause' в innerHTML, но записывается только строка, а таймер отрабатывает так как если бы он был объявлен отдельным statement'ом... Можешь, пожалуйста, прокомментировать это и строку n ^= 1? Решение очень простое и элегантное, но мне не хватает смекалки, чтобы до конца разобраться... |
Цитата:
Цитата:
|
рони,
Спасибо за объяснения, это для меня много прояснило :) |
| Часовой пояс GMT +3, время: 19:57. |