从jQuery中获取变量值

时间:2013-01-13 19:25:13

标签: javascript jquery

有没有办法提取jQuery中使用的变量的值,以便我们可以在JavaScript函数中使用它

<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 ...(最后我成功至少把我的代码放在这个网站上:-))

5 个答案:

答案 0 :(得分: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>

答案 1 :(得分:1)

这样的事情应该有效,x只需要是一个全局变量:

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

function myFunction(){    
    alert(x);
}

myFunction();
</script>

答案 2 :(得分:1)

jQuery是Javascript,它只是Javascript变量的范围问题。

使变量成为全局变量,然后您也可以从函数中访问它:

var x;

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

function myFunction() {    
    alert(x);
}

但是,ready事件在加载了entore文档时运行,因此该值仅在事件处理程序运行后才可用。如果在此之前调用该函数,则变量的值仍未定义。

答案 3 :(得分:0)

这只是javascript范围规则。函数内部定义的x在外部不可用。您需要将该值传递给myFunction,或者您需要在myFunction可以看到的范围内定义x。

答案 4 :(得分:0)

多种方式:

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

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

但是,在值在变量中之前必须触发就绪事件。如果您直接在代码中提出要求,则会获得undefined

我建议在准备好的活动中做所有。然后你也可以访问你的变量。

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

function myFunction(){    
    alert(x);
}