Задать вопрос
@fancarver
инженер-радиотехник

Как запускать и останавливать программу на JS одной кнопкой?

Есть код секундомера на JS. Старт и стоп реализованы на нажатии разных клавиш клавиатуры. 1- старт, 8- стоп. В этом случае все работает нормально.
function trim(string) { return string.replace (/\s+/g, " ").replace(/(^\s*)|(\s*)$/g, ''); }
var init=3;
var startDate;
var clocktimer;
document.getElementById("time").style.color="#fff";

Ready.onclick = function() {
	init = 0;
	document.clockform.clock.value='00:00.00';
	document.getElementById("time").style.color="#555";
	var str = trim(document.clockform.label.value);
	document.getElementById('athlete').innerHTML = str;
}

Fail.onclick = function() {
	if (init!=3) {
	var str = trim(document.clockform.label.value);
	document.getElementById('marker').innerHTML = (str===''?'':'<tr><td>'+str+': </td><td>') + 
	'Сход!</td></tr>' + document.getElementById('marker').innerHTML;
	document.clockform.clock.value='XX:XX.XX';
	document.getElementById("time").style.color="#f00";
	init = 3;
  var audio = new Audio('http://free84010.ispsite.ru/sound/fail.mp3');
  audio.play();
	}
}

 function startTIME() { 
	var thisDate = new Date();
	var t = thisDate.getTime() - startDate.getTime();
	var ms = t%1000; t-=ms; ms=Math.floor(ms/10);
	t = Math.floor (t/1000);
	var s = t%60; t-=s;
	t = Math.floor (t/60);
	var m = t%60; t-=m;
	t = Math.floor (t/60);
	var h = t%60;
	if (h<10) h='0'+h;
	if (m<10) m='0'+m;
	if (s<10) s='0'+s;
	if (ms<10) ms='0'+ms;
	if (init==1) document.clockform.clock.value = m + ':' + s + '.' + ms;
	clocktimer = setTimeout("startTIME()",10);
}

addEventListener("keydown", function(eventGo) {
	if (eventGo.keyCode == 49)
		if (init===0) {
			startDate = new Date();
			startTIME();
			init=1;
		}
});

addEventListener("keydown", function(eventStop) {
	if (eventStop.keyCode == 56)
		if (init===1) {
			var str = trim(document.clockform.label.value);
			document.getElementById('marker').innerHTML = (str===''?'':'<tr><td>'+str+': </td><td>') + 
			document.clockform.clock.value + '</td></tr>' + document.getElementById('marker').innerHTML;
			init = 3;
			document.getElementById("time").style.color="#8ec449";
		}
});

Как реализовать тоже самое по нажатию только одной клавиши, например Enter? Первый раз нажал - секундомер запустился, второй раз нажал - секундомер остановился. Пробовал написать eventStop.keyCode == 13 и eventStop.keyCode == 13, но секундомер сразу запускается и останавливается.
  • Вопрос задан
  • 325 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@dimoff66
Кратко о себе: Я есть
addEventListener("keydown", function(eventGo) {
  if (eventGo.keyCode !== 13) return
  if (init===0) {
    // Код запуска
    init=1;
  } else {
    // Код остановки
    init = 0;
  }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы