制作全局变量的问题

时间:2012-07-28 03:18:50

标签: javascript jquery variables global

我仍然是JavaScript和Jquery的新手,但如果有人可以提供帮助,我会非常感激,因为我已经在这个问题上苦苦挣扎了几个小时。

我有一个函数,它是更大的插件函数的一部分(如果有人熟悉的话,Gaya的QueryLoader2)。在我正在查看的函数中,有一个部分可以获取页面中正在加载的项目的百分比值:

var completeImageLoading = function () {
    qLdone++;
    var percentage = (qLdone / qLimageCounter) * 100;

    if (qLoptions.percentage == true) {
        $(qLpercentage).text(Math.ceil(percentage) + "%");
    }

    if (qLdone == qLimageCounter) {
        destroyQueryLoader();
    }
}

部分“var percentage”是我需要成为gloabal的部分,因此数字百分比值可以被另一个完全在此之外的函数使用(实际上在另一个Javascript文件中)。我已经尝试删除'var',但这不起作用。

如果有人可以提供帮助,我真的很感激!感谢

3 个答案:

答案 0 :(得分:1)

在你的职能之外:

var percentage;

在你的函数内部(没有var):

percentage = (qLdone / qLimageCounter) * 100;

基本上,在JavaScript中,可以在该函数内使用与函数相同位置声明的局部变量(读取和写入)。使用这种局部变量的函数称为闭包

答案 1 :(得分:0)

试试这个

var percentage;

var completeImageLoading = function () {
    qLdone++;
    percentage = (qLdone / qLimageCounter) * 100;

    if (qLoptions.percentage == true) {
        $(qLpercentage).text(Math.ceil(percentage) + "%");
    }

    if (qLdone == qLimageCounter) {
        destroyQueryLoader();
    }
}

答案 2 :(得分:0)

如果您发送有关脚本的更多信息将更容易为您提供帮助,但无论如何我都会尝试。
首先,对于全局变量返回undefined,你做错了。

看看这个http://jsfiddle.net/WyShw/3/,变量是定义的(不管在哪里),并且返回值。刚刚验证了在调用变量之前是否正在调用函数(completeImageLoading()),因为在这种情况下,您不需要定义变量,它是在调用函数completeImageLoading()时定义的。如果我们从未在函数中调用它,我们使用默认值进行定义。