2016-03-03 72 views
2
function Scroller(id){ 
    this.ID = id; 
    this.obj = $("#"+id); 
    this.currentSlide = 1; 

    var self = this; 
    setInterval(self.nextSlide, 1000); 
} 

Scroller.prototype.nextSlide = function(){ 
    this.slideTo(this.currentSlide+1); 
} 

Scroller.prototype.slideTo = function(slide){ 
    // slide = (slide+this.obj.children().size()-1) % this.obj.children().size()+1; 
    // $("#"+this.ID+" > *:first-child").stop().animate({"margin-left": "-"+this.obj.get(0).offsetWidth*(slide-1)}, 1000); 
    // currentSlide = slide; 
} 

$(document).ready(function(){ 
    new Scroller("actielist"); 
}); 

所以這是我爲我的滾輪代碼,但是當我嘗試運行它,它給了我下面的錯誤:「遺漏的類型錯誤:this.slideTo不是一個函數」的Javascript原型訪問另一個函數原型

回答

4

setInterval調用一個函數時,它調用window(即它調用全局範圍/上下文中的函數)的上下文(或this值)。您需要確保nextSlide中的上下文是正確的。

嘗試:

setInterval(self.nextSlide.bind(self), 1000); 
+2

你也可能會希望保存的setInterval調用的返回值,這樣就可以在以後清除間隔 – Belfordz