2012-04-23 28 views
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.pageMarginarticleTransition機能でthis.articleMarginの値が変化しても常に0です。そして、コンソールログ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を定義しましたか? –

+0

申し訳ありません私は質問でそれを逃した。私は再び質問を編集しました。 – Subash

+0

とthis.div.width()も同様に設定されているか、どこからでも.divを取得していますか? –

答えて

0

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

0

匿名機能のスコープを呼び出しているからだと思います。このようにしてみてください:

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