Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.04.2014, 16:44
Аспирант
Отправить личное сообщение для saves7 Посмотреть профиль Найти все сообщения от saves7
 
Регистрация: 07.08.2013
Сообщений: 53

Не останавливается работа 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>
Ответить с цитированием
  #2 (permalink)  
Старый 30.04.2014, 16:52
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

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

Последний раз редактировалось jsnb, 30.04.2014 в 16:55.
Ответить с цитированием
  #3 (permalink)  
Старый 30.04.2014, 16:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

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>

Последний раз редактировалось рони, 30.04.2014 в 17:00.
Ответить с цитированием
  #4 (permalink)  
Старый 30.04.2014, 16:57
Аватар для nice_try
Профессор
Отправить личное сообщение для nice_try Посмотреть профиль Найти все сообщения от nice_try
 
Регистрация: 11.12.2013
Сообщений: 313

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

а в 28 строке убери var
Ответить с цитированием
  #5 (permalink)  
Старый 30.04.2014, 17:07
Аспирант
Отправить личное сообщение для saves7 Посмотреть профиль Найти все сообщения от saves7
 
Регистрация: 07.08.2013
Сообщений: 53

Всем спасибо! ))) Буду разбираться!
Ответить с цитированием
  #6 (permalink)  
Старый 30.04.2014, 17:10
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Сообщение от рони Посмотреть сообщение
jsnb,
это некритично
Офигеть, я даже код не стал смотреть из-за этого. Ппц, даже mdn при описании clearTimeout об этом ни слова.
Ответить с цитированием
  #7 (permalink)  
Старый 30.04.2014, 17:40
Аспирант
Отправить личное сообщение для saves7 Посмотреть профиль Найти все сообщения от saves7
 
Регистрация: 07.08.2013
Сообщений: 53

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

Сообщение от nice_try Посмотреть сообщение
объяви var s=0, timerID;

а в 28 строке убери var
ничего остального не трогая и все будет работать!
Ответить с цитированием
  #8 (permalink)  
Старый 30.04.2014, 17:41
Аспирант
Отправить личное сообщение для saves7 Посмотреть профиль Найти все сообщения от saves7
 
Регистрация: 07.08.2013
Сообщений: 53

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

не понятно.
Ответить с цитированием
  #9 (permalink)  
Старый 30.04.2014, 18:04
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

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

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
setInterval и глобальные переменные Почемучкин Events/DOM/Window 11 11.08.2012 14:44
Постоянная работа / Front-end / Москва kooper Работа 4 29.09.2011 22:06
setTimeout setInterval и др. mycoding Общие вопросы Javascript 6 28.10.2010 17:26
Непонятная работа setInterval alekson Общие вопросы Javascript 3 23.12.2008 18:14
Проблема в document.write при использовании setInterval() GOll Общие вопросы Javascript 21 06.10.2008 17:38