2012-04-23 78 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'));