我在构建
Javascript对象时遇到问题,并使用setTimeout调用该对象内的方法.我已经尝试了各种解决方法,但总是在我的循环的第二部分,范围变成窗口对象而不是我的自定义对象.警告:我很新的javascript.
我的代码:
$(function() { slide1 = Object.create(slideItem); slide1.setDivs($('#SpotSlideArea')); slide1.loc = 'getSpot'; slide2 = Object.create(slideItem); slide2.setDivs($('#ProgSlideArea')); slide2.loc = 'getProg'; slide2.slide = 1; setTimeout('triggerSlide(slide1)',slide1.wait); setTimeout('triggerSlide(slide2)',slide2.wait); }); function triggerSlide(slideObject) { slideObject.changeSlide(slideObject); } var slideItem = { div1: null,div2: null,slide: 0,wait: 15000,time: 1500,loc: null,changeSlide: function(self) { this.slide ? curDiv = this.div1:curDiv = this.div2; $(curDiv).load(location.pathname + "/" + this.loc,this.slideGo(self)); },setDivs: function(div) { var subDivs = $(div).children(); this.div1 = subDivs[0]; this.div2 = subDivs[1]; },slideGo: function(self) { if(this.slide) { $(this.div2).animate({ marginLeft: "-300px" },this.time); $(this.div1).animate({ marginLeft: "0" },this.time); setTimeout('triggerSlide(self)',this.wait); } else { $(this.div1).animate({ marginLeft: "300px" },this.time); $(this.div2).animate({ marginLeft: "0" },this.wait); } this.slide ? this.slide=0:this.slide=1; } }
我最近的尝试是构建helper函数triggerSlide,以便我可以尝试通过我的方法传递对象的引用,但即使这样似乎不起作用.
但是我可以使用setInterval,但是它可以使用:
>我想在定时器重新启动之前确保动画已经完成
>我不会学习如何解决这个问题.