javascript函数变量总是未定义的

时间:2016-06-28 08:27:02

标签: javascript jquery

我正在尝试编写一个简单的函数来检查具有指定类的复选框的负载。我想使用一个变量来确定是否已经点击了check all div但是变量总是未定义:

var CCT;
$("#filterTitleTopic").click(function () {  
    console.log(CCT);
    if (CCT == undefined || CCT == null || CCT == 2) {              
         $('input.topic').prop('checked', false);
         var CTT = 1;
         console.log("unchecking boxes...");
    }
    else if (CTT == 1) {                
        $('input.topic').prop('checked', true);
        var CTT = 2;
        console.log("checking boxes...");
    }
});

console.log始终返回undefinedunchecking boxes...

3 个答案:

答案 0 :(得分:0)

当您想要定义变量时,只需使用install.packages('rJava', type='source') install.packages('xlsx', type='source') ,当您想要将值设置为现有变量时,不要添加它。

只需用以下代码替换您的代码:

$opt = array(
    'resource'          =>'customers',
    'display'           => '[birthday]',
    'filter[firstname]' => '[John]',
    'filter[lastname]'  => '[DOE]'
);

答案 1 :(得分:0)

仅指定变量,不要使用var重新启用它。

如果执行var CTT = 2会发生什么情况,即在函数作用域上初始化一个新变量,该变量优先于全局作用域中定义的变量。因为这是允许的,有时甚至希望你没有错误。但是,因为您在函数范围上初始化变量,所以不再访问第1行中定义的变量。

您还混淆了CCTCTT

这可行(see fiddle

var CTT;
$("#filterTitleTopic").click(function () {  
    console.log(CTT);
    if (CTT == undefined || CTT == null || CTT == 2) {              
         $('input.topic').prop('checked', false);
         CTT = 1;
         console.log("unchecking boxes...");
    }
    else if (CTT == 1) {                
        $('input.topic').prop('checked', true);
        CTT = 2;
        console.log("checking boxes...");
    }
});

答案 2 :(得分:0)

我想这里有两个问题:

  • 一个简单的拼写错误(CCT vs CTT)。
  • 如果您在函数中使用var foo,则会获得全新的本地函数,并且您无法再直接访问您在外部escope中定义的任何foo函数。要访问全局变量只是使用它们,而不是重新定义它们。