-5

JavaScript関数で使用できるように、jQueryで使用される変数の値を抽出する方法はありますか

<script>
var val;
$(document).ready(function() {$('.nav a').click(function(event) 
{event.preventDefault();
val=$(this).index();

if(val==0){

$('#hide_main').hide();
$('.main_BSNS').animate({opacity:"show",height:"400px"},'slow')                                             


                    }//if val==0 ends here

                else if(val==1){

                    $('#hide_main').hide();
                    $('.main_ACTNT').animate({opacity:"show",height:"400px"},'slow')                                                

                    }

                else if(val==2){

                    $('#hide_main').hide();
                    $('.main_devp').animate({opacity:"show",height:"400px"},'slow')                                             


                    }




            });



        });
function getCookie(c_name){
var i,x,y,ARRcookies=document.cookie.split(";");
for (i=0;i<ARRcookies.length;i++)
{
x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
x=x.replace(/^\s+|\s+$/g,"");
if (x==c_name)
{
return unescape(y);
}
}
}

function setCookie(c_name,value,exdays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
document.cookie=c_name + "=" + c_value;
}

function checkCookie()
{
var username=getCookie("BSNS");
if (username!=null && username!="")
{
$('#hide_main').hide();
$('.main_BSNS').animate({opacity:"show",height:"400px"},'slow')
}

else
{
alert(val);
if (username!=null && username!="")
{
setCookie("BSNS",username,365);
$('#hide_main').hide();
$('.main_BSNS').animate({opacity:"show",height:"400px"},'slow')
}
}
}   
</script>

今、私はこの checkCookie() 関数を呼び出す必要がありますが、アラートは常に未定義の値で表示されます (多くのユーザーが予測したように) が、これに対する解決策を見つけられず、これらの Cookie を書き込むことができません...(最終的に少なくともこのウェブサイトに私のコードを載せることに成功しました :-) )

4

5 に答える 5

2

myFunction の後に括弧がないために発生した構文エラーを修正してみてください。これは機能します:

<input type="button" id="mybutton" value="click me" />

<script>

var x;
$(document).ready(function(e) {
    x=5;
});

function myFunction(){
    alert(x);
}

$('#mybutton').click(myFunction);

</script>
于 2013-01-13T19:30:52.753 に答える
1

このようなものが機能するはずxです。グローバル変数である必要があります。

<script>
var x;
$(document).ready(function(e){    
    x=5;
});

function myFunction(){    
    alert(x);
}

myFunction();
</script>
于 2013-01-13T19:28:25.477 に答える
1

jQuery は Javascript です。Javascript 変数の範囲の問題です。

変数をグローバルにすると、関数からもアクセスできます。

var x;

$(document).ready(function(e){    
    x = 5;
});

function myFunction() {    
    alert(x);
}

ただし、readyイベントはドキュメント全体が読み込まれたときに実行されるため、イベント ハンドラーが実行された後にのみ値を使用できます。その前に関数を呼び出すと、変数の値は未定義のままです。

于 2013-01-13T19:30:21.867 に答える
0

これは単なる JavaScript スコープ ルールです。関数内で定義された x は、外部では使用できません。その値を myFunction に渡すか、myFunction が認識できるスコープで x を定義する必要があります。

于 2013-01-13T19:26:53.353 に答える
0

複数の方法:

var x; // may be initiated with a value
$(document).ready(function(e){    
    x = 5;
});

また

$(document).ready(function(e){    
    window.x = 5;
});

ただし、ready イベントは、値が変数に入る前に発生する必要があります。コードで直接要求すると、undefined.

準備ができたイベント内ですべてを行うことをお勧めします。次に、変数にもアクセスできます。

var x;
$(document).ready(function(e){    
    x=5;
    myFunction(); // call it here or later
});

function myFunction(){    
    alert(x);
}
于 2013-01-13T19:36:22.137 に答える