2012-04-23 58 views
0

我想添加兩個數字,但由於某種原因,我沒有收到NaN。在原型函數中更改時更新數值變量

下面是示例代碼

function Slider(container, nav, pagination){ 
    this.articleWidth = this.div.width() + 20; 
    this.divWidth = 960; 
    this.articleMargin = 0; 
    this.pageMargin = this.divWidth + this.articleMargin 
} 

Slider.prototype.articleTransition = function(pageNum){ 
    var currArticle = pageNum -1; 
    this.articleMargin = currArticle * this.articleWidth; 
    this.container.animate({'margin-left': -this.articleMargin}); 
} 

這裏一切正常。但this.pageMargin始終爲0,即使this.articleMargin的值在articleTransition函數中發生變化。而當我的控制檯日誌this.pageMargin是說NaN。我試圖改變值this.articleMargin的值,每次它在函數中被調用。

下面是我如何在我的HTML中調用該函數。

var slider = new Slider($('div#contentSleeve'), $('a.anav'), $('ul#scroller li')); 

    slider.pagination.live('click', function(){ 
     slider.articleTransition($(this).data('num')); 
    }); 
+1

你在哪裏定義articleWidth? – 2012-04-23 09:22:31

+0

對不起,我錯過了它的問題。我再次編輯了這個問題。 – Subash 2012-04-23 09:23:51

+0

和this.div.width()是否也設置好了,還是從別的地方得到了.div? – 2012-04-23 09:25:33

回答

0

我確實解決了這個問題。我所要做的就是創建一個全局變量,它將存儲pageMargin和ArticleMargin的值。

0

我想那是因爲你在匿名函數範圍內調用。嘗試像這樣:

slider.articleTransition.call(slider, $(this).data('num'));