0

javascript でグローバル変数を定義する方法を知りたいです。それが私がやっていることであり、 currentValue をグローバルにして、毎回 gotoNext と前の関数がその値を変更できるようにしたい

onPageClick : function(event) {
                var currentValue = event.target.innerHTML;

                if (currentValue == "Next")
                    this.gotoNext();

                if (currentValue == "previous")

                    this.gotoPrev();

            },

gotoNext : function() {
                this.currentValue +1;

            },

gotoPrevious : function() {
                this.currentValue -1;

            },

しかし、 currentValue は goToNext と gotoPrevious で定義されていません!

4

2 に答える 2

0

関数スコープの外で currentValue を定義する必要があります。このような:

<script>
var currentValue = '';

/* YOUR SCRIPT GOES HERE */

</script>

ただし、最後の 2 つの関数のコードを変更する必要があります。

gotoNext : function() {
                currentValue += 1;

            },

gotoPrevious : function() {
                currentValue -= 1;

            }

ただし、これには注意してください。グローバル変数は悪いことです。IMO、オブジェクトを定義する最良の方法は次のとおりです。

var yourObject = function(){
    var currentValue = '';

    var that = {
            onPageClick : function(event) {
                var currentValue = event.target.innerHTML;

                if (currentValue == "Next")
                    that.gotoNext();

                if (currentValue == "previous")

                    that.gotoPrevious();

            },

            gotoNext : function() {
                currentValue += 1;

            },

           gotoPrevious : function() {
                currentValue -= 1;

            }
       };

       return that;

};

そして、次のように使用します。

var obj = yourObject();
obj.gotoNext();
obj.gotoPrevious();

スコープとクロージャーについて学ぶことをお勧めします:

http://robertnyman.com/2008/10/09/explaining-javascript-scope-and-closures/

于 2013-09-19T07:12:26.400 に答える