制造全局变量的问题

Problems making global variable

本文关键字:问题 全局变量 制造      更新时间:2024-03-23

我对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",但没用。

如果有人能帮忙,我真的很感激!感谢

函数外放置:

var percentage;

在您的函数内放入(无var):

percentage = (qLdone / qLimageCounter) * 100;

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

试试这个

var percentage;
var completeImageLoading = function () {
    qLdone++;
    percentage = (qLdone / qLimageCounter) * 100;
    if (qLoptions.percentage == true) {
        $(qLpercentage).text(Math.ceil(percentage) + "%");
    }
    if (qLdone == qLimageCounter) {
        destroyQueryLoader();
    }
}

如果你发送更多关于你的脚本的信息会更容易帮助你,但我还是会尝试的
首先,您对未定义的全局变量return做了错误的处理

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