Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.07.2015, 23:15
Профессор
Отправить личное сообщение для sotik Посмотреть профиль Найти все сообщения от sotik
 
Регистрация: 14.09.2012
Сообщений: 158

Библиотечка 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 сек должна запускаться функция, а она чё-то не запускается...
Ответить с цитированием
  #2 (permalink)  
Старый 06.07.2015, 23:43
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от sotik
'api(6)'
что должен сделать этот текст в 4 строке?
Ответить с цитированием
  #3 (permalink)  
Старый 06.07.2015, 23:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

sotik,
жмакнуть по тексту подождать 10 секунд вылетит птичка
<!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>
Ответить с цитированием
  #4 (permalink)  
Старый 07.07.2015, 00:44
Профессор
Отправить личное сообщение для sotik Посмотреть профиль Найти все сообщения от sotik
 
Регистрация: 14.09.2012
Сообщений: 158

Благодарю за поддержку.
Да, анонимную функцию убрал и всё работает.
А с анонимной функцией никак нельзя? Ведь в ней можно организовать выход из интервала по условию?!
Ответить с цитированием
  #5 (permalink)  
Старый 07.07.2015, 00:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от sotik
А с анонимной функцией никак нельзя?
замените строку 'api(6)' на нужную вам функцию в строке 32
Ответить с цитированием
  #6 (permalink)  
Старый 07.07.2015, 01:28
Профессор
Отправить личное сообщение для sotik Посмотреть профиль Найти все сообщения от sotik
 
Регистрация: 14.09.2012
Сообщений: 158

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

как-то так. но оно не работает, поскольку анонимная функция не получает переменную "e"
Ответить с цитированием
  #7 (permalink)  
Старый 07.07.2015, 02:21
Профессор
Отправить личное сообщение для Decode Посмотреть профиль Найти все сообщения от Decode
 
Регистрация: 31.01.2015
Сообщений: 576

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, 07.07.2015 в 02:25.
Ответить с цитированием
  #8 (permalink)  
Старый 07.07.2015, 09:51
Профессор
Отправить личное сообщение для sotik Посмотреть профиль Найти все сообщения от sotik
 
Регистрация: 14.09.2012
Сообщений: 158

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



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оптимизация JS WeMeSder Общие вопросы Javascript 0 13.06.2014 23:51
Предложение представить код с setInterval для n - но более двух DOM-єлементов JavaScriptProgrammer Events/DOM/Window 1 09.11.2012 08:09
setInterval и глобальные переменные Почемучкин Events/DOM/Window 11 11.08.2012 14:44
setTimeout setInterval и др. mycoding Общие вопросы Javascript 6 28.10.2010 17:26
Проблема в document.write при использовании setInterval() GOll Общие вопросы Javascript 21 06.10.2008 17:38