Библиотечка 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, время: 12:25. |