2012-01-07 75 views
0

我有抓住一点击“DIV”的“身份证”,并使用它作为一个变量,如下面的脚本:JavaScript的变量在脚本中无法识别

$(document).ready(function(){ 
    $(".box").click(function(e){ 
    var newvar = ("#" + $(this).attr("id") + "Contact"); 

     alignPop(); 

    if(status==0){ 
     $("#popBG").css({ 
     "opacity": "0.5" 
     }); 
     $("#popBG").fadeIn("slow"); 
     $(newvar).fadeIn("slow"); 
     popupStatus = 1; 
    } 

现在,到目前为止,一切都运行的但是当脚本触发在'click'功能的括号之外定义的函数'alignPop()'时,它不会识别新定义的变量'newvar'。该脚本将继续如下所示:

function alignPop(){ 
    var popH = $(newvar).height(); 
    var popW = $(newvar).width(); 

为什么脚本稍后在脚本中不能识别变量?可能是因为在变量被定义之前,整个脚本是一次加载的?有没有办法解决这个问题?

谢谢,请保留简单的英语答案,因为我是新手!

回答

1

变量的作用域没有正确。因为它是在ready函数中声明的,所以它被包含在该函数的范围内,并且不能在脚本的其他地方看到。如果你不在函数中,将var newvar;放在ready函数中,则删除newvar = ("#" + $(this).attr("id") + "Contact");行上的var,你应该可以将它用作全局变量。

代码是这样:

var newvar; 
$(document).ready(function() { 
    $(".box").click(function(e){ 
     newvar = ("#" + $(this).attr("id") + "Contact"); 
     // .. 
+0

显示固定代码... – gdoron 2012-01-07 19:49:14

+0

当然!太棒了!非常感谢! – Matte 2012-01-07 19:50:01

+0

@gdoron显示相关的固定代码。而Matias没问题。不要忘记在正确的答案上标记正确的答案。欢迎来到StackOverflow :) – Ktash 2012-01-07 19:53:42

1

“?为什么不脚本识别变量后来在脚本”

因为“newvar”不在alignPop函数的范围内。您需要将此变量作为参数传递。尝试:

function alignPop(elem){ 
    var popH = $(elem).height(); 
    var popW = $(elem).width(); 
    ... 
} 

,并呼吁像这样的功能:

alignPop(newvar); 

为了更好的性能,您可以通过ELEM作为一个jQuery对象不是字符串。