3

以前にこの質問をしたことがありますが、実際に機能することはありませんでした。

多かれ少なかれ、1 つの変数に対してチェックする必要がある複数の JS ファイルがあります。クラスが存在するかどうかを確認してから変数を変更する関数があります。

var states = function(){

    if($('#Animation.switch.switchOff').length == 1){
        animationtoggle = 0;
    }
    else {
        animationToggle = 1 ;
    }
    if($('#Autoscroll.switch.switchOff').length == 1){
        scrolltoggle = 1;   
    }
    else {
        scrolltoggle = 0    
    }
    return {
        animationtoggle: animationtoggle,
        scrolltoggle: scrolltoggle
    };
}

次に、別の関数内に、別の JS ファイルに次のように記述します。

Okay, I've done this, although It still doesn't fix my problem of being able to use this variable on another file, I have this inside the function: 

$(function() {
    var ss = states();
    ss.animationtoggle;
    var last_position = 0;
    var duration = 300;
    if (animationtoggle == 1){
       //only do something if it's equal to 1 "on"
});

これはトグル ボタンのコードです。

$('#optionMenu ul li').click(       
function() {
$(this).toggleClass('switchOff');
var ss = states();
ss.scrolltoggle;
ss.animationtoggle; 
});

私はこれに正しい方法で取り組んでいますか?

助けてください!これが私のサイトです。現在、トグルは右隅にあります: http://shannonhochkins.v5.cloudsvr.com.au/

4

3 に答える 3

1

同じ変数を複数回作成して割り当てることで、それらを上書きしていると思います。グローバル変数は、特定の関数の範囲外で、できればページ読み込み時の最初の操作の近くで一度定義する必要があります。グローバル変数はウィンドウオブジェクトに割り当てられ、宣言されると名前でアクセスできます。

//You need to define your global variable out of the scope of your function
var ss = states();

$(function() {
if (ss.animationtoggle == 1){
   //only do something if it's equal to 1 "on"
});

$('#optionMenu ul li').click(       
function() {
$(this).toggleClass('switchOff');
//Don't create the same variable here with the same name
//Instead access the global variables by using them
// ss.scrolltoggle;
// ss.animationtoggle; 
});
于 2012-08-14T02:27:30.900 に答える
0

変更してみてください

var animationtoggle = 1,

animationtoggle = 1, 

それらを関数の外に移動します。そうでない場合、それらは何度も初期化されます

于 2012-08-14T02:27:44.067 に答える
0

混乱を避けるために、関数内の変数の名前を変更してみてください。

var animationtoggle = 1;
...

var _animationtoggle = 1;
...
return { animationtoggle : _animationtoggle, ....}

または、関数の代わりに次のようにします。

return {
        animationtoggle: ($('#Animation.switch.switchOff').length == 1)?0:1,
        scrolltoggle: ($('#Autoscroll.switch.switchOff').length == 1)?1:0
};
于 2012-08-14T03:41:18.010 に答える