Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Библиотечка setInterval (https://javascript.ru/forum/dom-window/56853-bibliotechka-setinterval.html)

sotik 06.07.2015 23:15

Библиотечка 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 сек должна запускаться функция, а она чё-то не запускается...

рони 06.07.2015 23:43

Цитата:

Сообщение от sotik
'api(6)'

что должен сделать этот текст в 4 строке?

рони 06.07.2015 23:45

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>

sotik 07.07.2015 00:44

Благодарю за поддержку.
Да, анонимную функцию убрал и всё работает.
А с анонимной функцией никак нельзя? Ведь в ней можно организовать выход из интервала по условию?!

рони 07.07.2015 00:50

Цитата:

Сообщение от sotik
А с анонимной функцией никак нельзя?

замените строку 'api(6)' на нужную вам функцию в строке 32

sotik 07.07.2015 01:28

Не совсем то что нужно...
function $i(e,t){
var i = 0; //обнуляем счетчик массива
return setInterval( // создаем интервал
    function(){
if(++i >= 20){
clearInterval( interval );
}else{
e
}
},
t * 1000)
}

как-то так. но оно не работает, поскольку анонимная функция не получает переменную "e"

Decode 07.07.2015 02:21

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);

sotik 07.07.2015 09:51

Decode, return там для того, чтоб можно было этой функцией запустить сразу несколько таймеров с возможностью их остановки, соответственно идентификаторы у всех будут разные.


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