Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 脚本中无法识别JavaScript变量_Jquery_Variables_Var - Fatal编程技术网

Jquery 脚本中无法识别JavaScript变量

Jquery 脚本中无法识别JavaScript变量,jquery,variables,var,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"

我有一个脚本,它获取单击的“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()”时,它无法识别新定义的变量“newvar”,该函数是在“click”函数的括号外定义的。脚本将继续类似以下内容:

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

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


谢谢,请用简单的英语回答,因为我对这东西还不熟悉

变量的作用域不正确。因为它是在
ready
函数中声明的,所以它包含在该函数的范围内,在脚本的其他地方看不到。如果你想,在你的函数之外,放一个
var newvar
并在
ready
函数中,删除
newvar=(“#“+$(this).attr(“id”)+“Contact”)行上的
var
,您应该能够将其用作全局变量

代码如下所示:

var newvar;
$(document).ready(function () {
    $(".box").click(function(e){
        newvar = ("#" + $(this).attr("id") + "Contact");
        // ..
“为什么脚本以后不能识别脚本中的变量?”

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

function alignPop(elem){
    var popH = $(elem).height();
    var popW = $(elem).width();
    ...
}
这样调用这个函数:

alignPop(newvar);

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

@gdoron显示了相关的固定代码。马蒂亚斯没问题。别忘了在正确答案上标出正确答案。欢迎来到StackOverflow:)