我仍然是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',但这不起作用。
如果有人可以提供帮助,我真的很感激!感谢
答案 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()时定义的。如果我们从未在函数中调用它,我们使用默认值进行定义。