脚本中无法识别JavaScript变量

时间:2012-01-07 19:43:07

标签: jquery variables var

我有一个脚本可以抓取点击的'div'的'id'并将其用作变量,如下所示:

 $(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;
    }

现在,到目前为止,所有内容都作为发条运行,但是当脚本触发函数'alignPop()'时,它在'click'函数的括号外定义,它无法识别新定义的变量'newvar'。该脚本将继续如下:

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

为什么脚本以后不会在脚本中识别变量?可能是因为在定义变量之前立即加载整个脚本?有办法解决这个问题吗?

谢谢,请用简单的英文保留答案,因为我是这个人的新手!

2 个答案:

答案 0 :(得分:1)

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

代码如下:

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

答案 1 :(得分:1)

“为什么脚本以后不会在脚本中识别变量?”

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

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

并调用此函数:

alignPop(newvar);

为了获得更好的性能,您可以将elem作为jQuery对象传递而不是字符串。