работа с clearInterval
День добрый
написал я вот такой код, он занимается тем, что выпихивает построчно текст из-за рамки так чтобы его было видно. Код работает и текст летает. вот сам код. var nth=1; var i=1; function leftText(){ $('ul.slides>li:nth-child('+nth+')>article>div>ul>li:nth-child('+i+')').animate({ 'margin-left':'500px' },'slow'); if(i==12){ clearInterval(timerId); } } var timerId = setInterval(function(){leftText(); i++}, 300); по сути он находит список и поочередно совает его элементы. но вот в чем вопрос: верно ли я закончил выполнение setInterval? так как, когда я поставил после clearInterval alert, то он мне нескончаемое количество сообщений вывел. можно ли заканчивать циклическое выполнение функции внутри функции которую вызывает эта функция? |
Цитата:
<!DOCTYPE html> <html> <head> <meta http-equiv='Content-Type' content='text/html; charset=windows-1251' /> <script src='http://code.jquery.com/jquery-latest.js'></script> <!-- <script src="https://code.angularjs.org/1.3.9/angular.min.js"></script> <script src="https://code.angularjs.org/1.3.9/angular-route.js"></script> <link rel='stylesheet type=text/css href=tmp.css' /> <link rel="stylesheet/less" type="text/css" href="style.less"> <script src="http://cdnjs.cloudflare.com/ajax/libs/less.js/2.5.0/less.min.js"></script> --> <style type='text/css'> </style> <script type='text/javascript'> $(function(){ var i=1; function test(){ $('#info').text(i); if(i==12){ clearInterval(timerId); } } var timerId = setInterval(function(){test(); i++}, 300); }); </script> </head> <body> <div id="info"></div> </body> </html> Таки можно! :) |
Возможно проверочный алерт был засунут не туда куда нужно.)
<!DOCTYPE html> <html> <head> <meta http-equiv='Content-Type' content='text/html; charset=windows-1251' /> <script src='http://code.jquery.com/jquery-latest.js'></script> <!-- <script src="https://code.angularjs.org/1.3.9/angular.min.js"></script> <script src="https://code.angularjs.org/1.3.9/angular-route.js"></script> <link rel='stylesheet type=text/css href=tmp.css' /> <link rel="stylesheet/less" type="text/css" href="style.less"> <script src="http://cdnjs.cloudflare.com/ajax/libs/less.js/2.5.0/less.min.js"></script> --> <style type='text/css'> </style> <script type='text/javascript'> $(function(){ var i=1; function test(){ $('#info').text(i); if(i==12){ alert('конец'); clearInterval(timerId); } } var timerId = setInterval(function(){test(); i++}, 300); }); </script> </head> <body> <div id="info"></div> </body> </html> |
разобрался, я проверял изменение DOM вечной циклической функцией, которая постоянно повторяла запуск всех этих моих функций. и она клепала запуски алерта. теперь пытаюсь понять как работает MutationObserver...
|
Nifler, а что там непонятного - в обсервер стекуется история изменения документа без блокировки чтоб не тормозить обработку, и функция вызывается в ближайший свободный промежуток вываливая всё что накопилось.
//Хотя всё равно обидно, что от MutatonEvents полностью отказались, для юзерскриптов часто полезная фича была, а теперь приходится расширения писать в некоторых случаях. |
Цитата:
(function($,andefined){ $(document).ready(function(){ $("#mitka").css("margin-left","0"); function newSlide(){ for (var i=1; i<10; i++){ var margin=$("#mitka").css("margin-left"); if($(".slides>li:nth-child("+i+")").css("display")=="list-item"){ if(i+"px"!=margin){ $("#mitka").css("margin-left",i); $('.slides>li:nth-child('+i+')>article>div>ul>li').css("margin-left","-500px"); var nth=i; var j=1; function leftText(){ $('ul.slides>li:nth-child('+nth+')>article>div>ul>li:nth-child('+j+')').animate({ 'margin-left':'0px' },'slow'); if(j==12){ //clearInterval(timerId); } } timerId = setInterval(function(){leftText(); j++}, 200) $(".li_slyde").removeClass("li_slyde"); var nextI=i+1; $(".uk-navbar-nav>li:nth-child("+nextI+")").addClass("li_slyde"); } }else{ } } } setInterval(newSlide, 200); }) })(jQuery) это код, который высовывает текст на слайде, когда слайд листается. http://poli.molodost-dolgoletie.com/ вот тут он работает. могу сказать что #mitka создан исключительно для того, чтобы запоминать в каком слайде мы находимся, так как я так и не смог это запомнить в переменной. остальное сделано при помощи такого же бреда. |
Часовой пояс GMT +3, время: 09:05. |