Библиотечка setInterval
Здравствуйте.
Хочу сделать небольшую библиотечку, немножко не получается. ) function $i(e){ return setInterval( // создаем интервал function(){ e }, 10 * 1000) } var interval; start.addEventListener('click', function(e) { e.preventDefault(); el = e.target.innerHTML; if(el == "Api остановлен"){ alert("Api включен."); interval = $i('api(6)'); }else{ clearInterval( interval ); } }, false); То есть каждые 10 сек должна запускаться функция, а она чё-то не запускается... |
Цитата:
|
sotik,
жмакнуть по тексту подождать 10 секунд вылетит птичка :cray: <!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> </head> <body> <p>Api остановлен</p> <script> function $i(e){ return setInterval( // создаем интервал e, 10 * 1000) } var p = document.getElementsByTagName("p")[0] ; var interval; function api(a) { alert(a) } p.addEventListener('click', function(e) { e.preventDefault(); el = this.innerHTML; if(el == "Api остановлен"){ alert(this.innerHTML="Api включен."); interval = $i('api(6)'); }else{ clearInterval( interval ); } }, false); </script> </body> </html> |
Благодарю за поддержку.
Да, анонимную функцию убрал и всё работает. А с анонимной функцией никак нельзя? Ведь в ней можно организовать выход из интервала по условию?! |
Цитата:
|
Не совсем то что нужно...
function $i(e,t){ var i = 0; //обнуляем счетчик массива return setInterval( // создаем интервал function(){ if(++i >= 20){ clearInterval( interval ); }else{ e } }, t * 1000) } как-то так. но оно не работает, поскольку анонимная функция не получает переменную "e" |
sotik, а зачем там return?
function $i(e, t) { var i = 0; var timer = setInterval(function() { (++i >= 20) ? clearInterval(timer) : console.log(++e); }, t * 1000); } $i(1, 2); |
Decode, return там для того, чтоб можно было этой функцией запустить сразу несколько таймеров с возможностью их остановки, соответственно идентификаторы у всех будут разные.
|
Часовой пояс GMT +3, время: 01:05. |