javascript setInterval not keeping it's timing properly -
i've got multiple elements on page fade in , out on timer using javascript setinterval set them in motion. have them delayed offset create nice cascading effect, if leave page open long enough, catch 1 , timing gets messed (you've got leave few minutes).
i have ugly example of issue @ codepen here: http://www.cdpn.io/wgqjj
again, you've got leave page open , untouched few minutes see problem. if had more items on page (5 or 10) problem becomes more apparent. i've used type of effect several jquery photo rotator plugins, , on time, issue crops up.
is there explanation this?
here code i'm using (i know javascript cleaner):
html:
<p id="one">first</p> <p id="two">second</p> <p id="three">third</p>   javascript:
$(document).ready(function() {   var timer1 = settimeout(startone,1000);   var timer2 = settimeout(starttwo,2000);   var timer3 = settimeout(startthree,3000); });  function startone () {   setinterval(flashone,3000); }  function starttwo () {   setinterval(flashtwo,3000); }  function startthree () {   setinterval(flashthree,3000); }  function flashone () {   $("#one").fadeto("slow",0.4).fadeto("slow",1.0); }  function flashtwo () {   $("#two").fadeto("slow",0.4).fadeto("slow",1.0); }  function flashthree () {   $("#three").fadeto("slow",0.4).fadeto("slow",1.0); }      
question has been answered here. quoting top rated answer in topic:
it wait @ least 1000ms before executes, not wait 1000ms.
giving actual answer, i'd solve this:
$(function(){   settimeout(flashone,1000); });  function flashone () {   $("#one").fadeto("slow",0.4).fadeto("slow",1.0);   settimeout(flashtwo,1000); }  function flashtwo () {   $("#two").fadeto("slow",0.4).fadeto("slow",1.0);   settimeout(flashthree,1000); }  function flashthree () {   $("#three").fadeto("slow",0.4).fadeto("slow",1.0);   settimeout(flashone,1000); }   like it's not possible timers mess up, it's delayed 1 second after item before has flashed.
Comments
Post a Comment