Задать вопрос

Почему не работает код JS?

выдаёт - 0

<!DOCTYPE html>
<html lang='ru'>
<head>
	<meta charset="UTF-8">
	<title></title>
	<style>
		#clicker{
			height: 200px;
			width: 400px;
		}
		#count{
			font-size: 400%;
		}
	</style>
</head>
<body>
	<button id="clicker">click</button>
	<div id="count">o</div>
	<button id="save">начало пути  </button>
	<span id="saving"></span>
	<br><br>
	<button id="save2">конец пути  </button>
	<span id="saving2"></span>
	<br><br>
		<button id="send">сколько я прошёл</button>
		<span id="sendOTVET">-</span>
</body>
</html>
<script>
	var count = 0;

	function a() {
		count+= 1;
		document.getElementById('count').innerHTML = count;
	}
	clicker.addEventListener('mousedown' , a);
	clicker.addEventListener('contextmenu' , a);

	save.addEventListener('click' , function () {
		document.getElementById('saving').innerHTML = count;
	});
	save2.addEventListener('click' , function () {
		document.getElementById('saving2').innerHTML = count;
	});

	var saving = Number(document.getElementById('saving').innerText);
	var saving2 = Number(document.getElementById('saving2').innerText);
	send.addEventListener('click' , function () {
		document.getElementById('sendOTVET').innerHTML = saving2 - saving;
	});
</script>
  • Вопрос задан
  • 99 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 2
AlexKeller
@AlexKeller
Почитайте про замыкания и обработчики
send.addEventListener('click' , function () {
    var saving = Number(document.getElementById('saving').innerText);
    var saving2 = Number(document.getElementById('saving2').innerText);
    document.getElementById('sendOTVET').innerHTML = saving2 - saving;
  });
В момент клика по send блоки saving и saving2 имеют начальное значение, т.к. были сохранены при первом и единственном проходе по телу скрипта
Ответ написан
Комментировать
send.addEventListener('click' , function () {
  var saving = Number(document.getElementById('saving').innerText);
  var saving2 = Number(document.getElementById('saving2').innerText);
  document.getElementById('sendOTVET').innerHTML = saving2 - saving;
});

Ваша проблема в том, что в Вашем коде вы получаете значение один раз - при старте кода.
А здесь вы получаете значения в текущий момент исполнения программы.
P. S. А ещё, не пишите, так:
clicker.addEventListener('mousedown' , a);
Пишите так:
document.getElementById("clicker").addEventListener('mousedown' , a);

Так будет правильнее.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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