0

我对 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 percent”部分是我需要成为全局的部分,因此数字百分比值可以完全由另一个函数使用(实际上在另一个 Javascript 文件中)。我试过删除'var',但这不起作用。

如果有人可以提供帮助,我将不胜感激!谢谢

4

3 回答 3

1

在你的函数之外放:

var percentage;

在你的函数里面放(没有var):

percentage = (qLdone / qLimageCounter) * 100;

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

于 2012-07-28T03:20:23.827 回答
0

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

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

于 2012-07-28T04:10:03.100 回答
0

尝试这个

var percentage;

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

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

    if (qLdone == qLimageCounter) {
        destroyQueryLoader();
    }
}
于 2012-07-28T03:21:59.430 回答