Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не останавливается работа setInterval (https://javascript.ru/forum/misc/46940-ne-ostanavlivaetsya-rabota-setinterval.html)

saves7 30.04.2014 16:44

Не останавливается работа setInterval
 
Добрый день! Может кто объяснить, что не так. Не останавливается работа setInterval c помощью команды clearTimeout.
В этом примере:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title> Таблица </title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="keywords" content="	шаблон, html, html">
<meta name="description" content="Зто таблица">
<!-- <link rel="stylesheet" href="style.css" type="text/css" />   Ссылка файл стилей, если стили задаются отдельным файлом -->

<style type="text/css">
</style>

</head>

<body>

	<script>	
		
		var s=0;
		function vremy()  {
			s=s+1;
			document.getElementById("vremy").innerHTML=s;
		}

		function start() {
		s=0;
		var timerID=setInterval("vremy()",1000);  // запускаем отсчет в секундах, можно без var, но нужно для остановки

						};  

		function stop() {
		clearTimeout(timerID);
		s=0;
		}
   </script>
	

<div id="button">
  <input type="button" value="Start" name="statr" onclick="start()"> 
   <input type="button" value="Stop" name="stop" onclick="stop()"> 
</div>

   <div id="vremy">
	Время 
	</div>



</body>
</html>

jsnb 30.04.2014 16:52

Таймеры установленные через setInterval останавливаются через clearInterval, а не clearTimeout.
http://learn.javascript.ru/settimeout-setinterval

рони 30.04.2014 16:57

jsnb,
это некритично
Цитата:

Сообщение от jsnb
clearTimeout

одинаковые названия id и функции
Цитата:

Сообщение от saves7
vremy

и использование start в названии функции

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title> Таблица </title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="keywords" content="	шаблон, html, html">
<meta name="description" content="Зто таблица">
<!-- <link rel="stylesheet" href="style.css" type="text/css" />   Ссылка файл стилей, если стили задаются отдельным файлом -->

<style type="text/css">
</style>

</head>

<body>

	<script>

		var s=0, timerID;
		function vremy()  {
			s=s+1;
			document.getElementById("vr").innerHTML=s;
		}

		function start1() {
		s=0;
		timerID=setInterval(vremy,1000);  // запускаем отсчет в секундах, можно без var, но нужно для остановки

						};

		function stop() {
		clearTimeout(timerID);
		//s=0;
		}
   </script>


<div id="button">
  <input type="button" value="Start" name="statr" onclick="start1()">
   <input type="button" value="Stop" name="stop" onclick="stop()">
</div>

   <div id="vr">
	Время
	</div>



</body>
</html>

nice_try 30.04.2014 16:57

объяви var s=0, timerID;

а в 28 строке убери var

saves7 30.04.2014 17:07

Всем спасибо! ))) Буду разбираться!

jsnb 30.04.2014 17:10

Цитата:

Сообщение от рони (Сообщение 309920)
jsnb,
это некритично

Офигеть, я даже код не стал смотреть из-за этого. Ппц, даже mdn при описании clearTimeout об этом ни слова.

saves7 30.04.2014 17:40

Достаточно сделать

Цитата:

Сообщение от nice_try (Сообщение 309921)
объяви var s=0, timerID;

а в 28 строке убери var

ничего остального не трогая и все будет работать!

saves7 30.04.2014 17:41

Только почему так нельзя
var timerID=setInterval("vremy()",1000);

не понятно.

jsnb 30.04.2014 18:04

Цитата:

Сообщение от saves7 (Сообщение 309929)
Только почему так нельзя
var timerID=setInterval("vremy()",1000);

не понятно.

Потому что var делает timerID локальной переменной функции start и ее не видно из функции stop. Что и показывает выводимое в консоли сообщение об ошибке.


Часовой пояс GMT +3, время: 22:29.