2012-07-28 98 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()時定義變量。我們定義了一個默認值,以防我們從未在函數中調用它。