在原型函数中更改时更新数值变量

时间:2012-04-23 09:20:08

标签: javascript jquery html

我正在尝试添加两个数字但由于某种原因我没有得到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'));
    });

2 个答案:

答案 0 :(得分:0)

我猜那是因为你在匿名函数范围内调用。试试这样:

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

答案 1 :(得分:0)

我确实解决了这个问题。我所要做的就是创建一个全局变量来存储pageMargin和ArticleMargin的值。