-5

有什么方法可以提取 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 ......(最后我至少成功地将我的代码放在这个网站上:-))

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事件在 entore 文档加载后运行,因此该值仅在事件处理程序运行后可用。如果在此之前调用该函数,变量的值仍然是未定义的。

于 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 回答