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});
}

在这里一切都按预期工作。Butthis.pageMargin始终为 0,即使this.articleMargin' 的值在articleTransition函数中发生变化。当我控制台日志this.pageMargin是说NaNthis.articleMargin每次在函数中调用它时,我都试图改变它的值。

这是我在 HTML 中调用该函数的方式。

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

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

2 回答 2

0

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

slider.articleTransition.call(slider, $(this).data('num'));
于 2012-04-23T09:44:35.263 回答
0

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

于 2012-06-13T23:09:15.493 回答