Кнопка останов для функции с таймером
Здравствуйте. реализовал таймер, но никак не могу найти информации про остановку определенной функции кнопкой. В поиске по сайту есть похожее, но не совсем подходит.
<!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 к функции, чтобы эта самая кнопка останавливала действие функции с таймером? |
<!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> |
идеально, так все просто оказывается. спасибо!!
не могли бы пояснить строчку console.log(secs); ? для чего она нужна? и ещё такой вопрос, могу ли я на одну кнопку повесить выполнение двух функций, одна например останавливает таймер, а другая показывает скрытый блок? |
1.
console.log(secs);это я для себя, можете её убрать! (я ведь тоже учусь :yes: ) 2. Да, можно. |
<!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> |
<!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> можно ещё такой вариант, упрощенный, может пригодиться кому. спасибо за идеи |
Часовой пояс GMT +3, время: 04:01. |