2012-07-28 50 views
0

对于JavaScript和Jquery,我还是比较新的,但如果有人能够帮助,我会非常感激,因为我一直在为这个问题挣扎数小时。制作全局变量的问题

我有一个功能,是一个较大的插件功能(如果任何人都熟悉的加耶QueryLoader2的一部分)。在我看的功能,还有就是它得到了在页面加载项的百分比值的一部分:

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

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

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

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

如果有人可以帮忙,我会很感激!由于

回答

1

以外的功能放:

var percentage; 

里面你的函数把(无var):

percentage = (qLdone/qLimageCounter) * 100; 

基本上,在同一地点宣布JavaScript的局部变量可以使用功能(包括读取和写入)。使用这种局部变量的函数被称为关闭

+0

嗨Phrogz,感谢您的快速回复。我刚刚尝试过 - 把'var百分比'在脚本的顶部,在completeImageLoading函数之外,然后从函数内部删除'var',但是现在当我运行console.log时,它回到'undefined'。但是当我在completeImageLoading函数中运行console.log时,它给了我数字值没问题。所以它仍然不起作用:/ – 2012-07-28 03:27:39

+0

@RichDean你需要创建一个简化测试用例来共享。这种技术非常适用,所以你的实现不太适合。为了进一步提供帮助,我们需要查看您的实际失败代码。尝试http://jsfiddle.net/并用最小代码的简化示例编辑您的问题,以显示问题。 – Phrogz 2012-07-28 03:47:06

0

试试这个

var percentage; 

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

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

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

你好codetiger,yep只是试过,它仍然不工作: var percentage; \t var completeImageLoading = function(){ \t \t qLdone ++; \t \t percentage =(qLone/qLimageCounter)* 100; \t \t \t if(qLoptions。百分比== true){ \t \t \t $(qLpercentage).text(Math.ceil(percentage)+“%”); \t \t} \t \t 如果\t(qLdone == qLimageCounter){ \t \t \t destroyQueryLoader(); \t \t} \t} \t \t 的console.log(百分比); 'console.log(percentage);'回来'未定义',而如果我移动'console.log(百分比);'在completeImageLoading函数中,它工作并给我我需要的数字值。只有我需要它! – 2012-07-28 03:31:22

+0

发布包含var diclaration这两个函数的代码。如果按照正确的方式使用,上面的代码应该完美 – codetiger 2012-07-28 05:44:35

0

如果您有关脚本的详细信息会更容易帮助你,但我会想试试。
首先,你为全局变量做了一些错误,返回undefined。

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