Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.01.2016, 10:22
Аспирант
Отправить личное сообщение для Lecseus Посмотреть профиль Найти все сообщения от Lecseus
 
Регистрация: 13.08.2015
Сообщений: 45

Кнопка останов для функции с таймером
Здравствуйте. реализовал таймер, но никак не могу найти информации про остановку определенной функции кнопкой. В поиске по сайту есть похожее, но не совсем подходит.
<!DOCTYPE HTML>
 
<html>
 
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>
 
<body>
<script>
var mins = 90;  //Set the number of minutes you need
    var secs = mins * 60;
    var currentSeconds = 0;
    var currentMinutes = 0;
    /* 
     * The following line has been commented out due to a suggestion left in the comments. The line below it has not been tested. 
     * setTimeout('Decrement()',1000);
     */
    setTimeout(Decrement,1000); 

    function Decrement() {
        currentMinutes = Math.floor(secs / 60);
        currentSeconds = secs % 60;
        if(currentSeconds <= 9) currentSeconds = "0" + currentSeconds;
        secs--;
        document.getElementById("timer_").innerHTML = currentMinutes + ":" + currentSeconds; //Set the element id you need the time put into.
        if(secs !== -1) setTimeout('Decrement()',1000);	
		if(mins == 0 || secs == 0) window.location.replace("http://stackoverflow.com"); //if time ends its redirrecting to another page
    }
</script>
<button id="stop">Stop</button>
<div id="timer_" style="color: #000; font-size: 150%; font-weight: bold;">

подскажите, как привязать кнопку Stop к функции, чтобы эта самая кнопка останавливала действие функции с таймером?

Последний раз редактировалось Lecseus, 07.01.2016 в 10:32.
Ответить с цитированием
  #2 (permalink)  
Старый 07.01.2016, 11:29
Профессор
Отправить личное сообщение для Keramet Посмотреть профиль Найти все сообщения от Keramet
 
Регистрация: 30.12.2015
Сообщений: 194

<!DOCTYPE HTML>
<html>
<head>
	<title>Untitled</title>
	<meta charset="utf-8">
</head>
<body>
	<script>
		var mins = 90;  //Set the number of minutes you need
		var secs = mins * 60;
		var currentSeconds = 0;
		var currentMinutes = 0;
		var tmr; 
		
		
		tmr = setTimeout(Decrement,1000);

		function Decrement() {
			console.log(secs);
			currentMinutes = Math.floor(secs / 60);
			currentSeconds = secs % 60;
			if(currentSeconds <= 9) currentSeconds = "0" + currentSeconds;
			secs--;
			document.getElementById("timer_").innerHTML = currentMinutes + ":" + currentSeconds; //Set the element id you need the time put into.
			if(secs !== -1) { tmr = setTimeout('Decrement()',1000); } 
			if(mins == 0 || secs == 0) window.location.replace("http://stackoverflow.com"); //if time ends its redirrecting to another page
		}
		
		function stopTime(tmr) {
			clearTimeout(tmr);
		}
	</script>
	<button id="stop" onclick="stopTime(tmr)">Stop</button>
	<div id="timer_" style="color: #000; font-size: 150%; font-weight: bold;">
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 07.01.2016, 17:22
Аспирант
Отправить личное сообщение для Lecseus Посмотреть профиль Найти все сообщения от Lecseus
 
Регистрация: 13.08.2015
Сообщений: 45

идеально, так все просто оказывается. спасибо!!
не могли бы пояснить строчку console.log(secs); ? для чего она нужна?
и ещё такой вопрос, могу ли я на одну кнопку повесить выполнение двух функций, одна например останавливает таймер, а другая показывает скрытый блок?

Последний раз редактировалось Lecseus, 07.01.2016 в 17:35.
Ответить с цитированием
  #4 (permalink)  
Старый 07.01.2016, 19:01
Профессор
Отправить личное сообщение для Keramet Посмотреть профиль Найти все сообщения от Keramet
 
Регистрация: 30.12.2015
Сообщений: 194

1.
console.log(secs);
это я для себя, можете её убрать! (я ведь тоже учусь )

2. Да, можно.
Ответить с цитированием
  #5 (permalink)  
Старый 07.01.2016, 19:14
Профессор
Отправить личное сообщение для Keramet Посмотреть профиль Найти все сообщения от Keramet
 
Регистрация: 30.12.2015
Сообщений: 194

<!DOCTYPE HTML>
<html>
<head>
	<title>Timer + hideDiv</title>
	<meta charset="utf-8">
</head>
<body>
	<script>
		"use strict";
		var mins = 90;  //Set the number of minutes you need
		var secs = mins * 60;
		var currentSeconds = 0;
		var currentMinutes = 0;
		var tmr; 
	
		tmr = setTimeout(Decrement,1000);

		function Decrement() {
			currentMinutes = Math.floor(secs / 60);
			currentSeconds = secs % 60;
			if(currentSeconds <= 9) currentSeconds = "0" + currentSeconds;
			secs--;
			document.getElementById("timer_").innerHTML = currentMinutes + ":" + currentSeconds;
			if(secs !== -1) { tmr = setTimeout('Decrement()',1000); } 
			if(mins == 0 || secs == 0) window.location.replace("http://stackoverflow.com"); 
		}
		
		window.onload = function() {
			var myBtn = document.getElementById('stop');
			
			myBtn.onclick = function() {
				var hideDiv = document.getElementById('note');
				
				if (myBtn.innerText == 'Stop') {
					clearTimeout(tmr);
					myBtn.innerText = 'Start';
					hideDiv.style.display = 'block';
				} else {
					Decrement();
					myBtn.innerText = 'Stop';
					hideDiv.style.display = 'none';
				}
			}
		}
</script>
	<button id="stop">Stop</button>
	<div id="timer_" style="color: #000; font-size: 150%; font-weight: bold;"></div>
	<div id="note" style="display: none;" >Это скрытая информация!</div>
</body>
</html>

Последний раз редактировалось Keramet, 07.01.2016 в 19:59.
Ответить с цитированием
  #6 (permalink)  
Старый 08.01.2016, 07:49
Аспирант
Отправить личное сообщение для Lecseus Посмотреть профиль Найти все сообщения от Lecseus
 
Регистрация: 13.08.2015
Сообщений: 45

<!DOCTYPE HTML>
<html>
<head>
    <title>Timer + hideDiv</title>
    <meta charset="utf-8">
</head>
<body>
    <script>
        "use strict";
        var mins = 90;  //Set the number of minutes you need
        var secs = mins * 60;
        var currentSeconds = 0;
        var currentMinutes = 0;
        var timer;
     
        timer = setTimeout(Decrement,1000);
 
        function Decrement() {
            currentMinutes = Math.floor(secs / 60);
            currentSeconds = secs % 60;
            if(currentSeconds <= 9) currentSeconds = "0" + currentSeconds;
            secs--;
            document.getElementById("timer_").innerHTML = currentMinutes + ":" + currentSeconds;
            if(secs !== -1) { timer = setTimeout('Decrement()',1000); }
            if(mins == 0 || secs == 0) window.location.replace("http://stackoverflow.com");
        }
         
       function appear(){
            var hidden = document.getElementById('note');
            hidden.style.display = 'block';
       }
       function stopTime(timer) {
            clearTimeout(timer);
        }
</script>
    <button id="stop" onClick="stopTime(timer); appear();">Stop</button>
    <div id="timer_" style="color: #000; font-size: 150%; font-weight: bold;"></div>
    <div id="note" style="display: none;" >Это скрытая информация!</div>
</body>
</html>


можно ещё такой вариант, упрощенный, может пригодиться кому.
спасибо за идеи
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кнопка "Поделиться" для теста skvair Общие вопросы Javascript 1 17.03.2015 14:57
Помогите в замыкании универсальной функции для обработчиков событий addEventListener iis_ Events/DOM/Window 6 30.01.2014 01:09
Кнопка выкл/вкл эффекта для пользователя Scheme Общие вопросы Javascript 1 13.01.2014 08:37
Проверка существования входного параметра для функции Axe Я не знаю javascript 2 25.05.2009 14:58
Применение функции для каждого элемента sergeygerasimov jQuery 2 26.11.2008 11:15