0

2 つの数値を加算しようとしていますが、何らかの理由で 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.articleMarginarticleTransitionthis.pageMarginNaNthis.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

私はこれを修正しました。私がしなければならなかったのは、pageMarginとArticleMarginの両方の値を格納するグローバル変数を作成することだけでした。

于 2012-06-13T23:09:15.493 に答える
0

これは、匿名関数スコープで呼び出しているためだと思います。このようにしてみてください:

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