2010-08-01 67 views
1

我想在包含id列表的javascript中構建一個數組。下面是我有功能的簡化版本...Javascript:如何保持持久陣列數據

function updateCost(id) { 
    var inputArray = []; 
    inputArray.push(id); 
} 

這裏是html代碼...

<input type="file" name="field1" id="field1" onchange="updateCost('1');" /> 
<input type="file" name="field2" id="field2" onchange="updateCost('2');" /> 
<input type="file" name="field3" id="field3" onchange="updateCost('3');" /> 
... 

我想發生,每次我選擇一個時間文件從我的計算機使用我有的一個文件輸入字段,我希望該輸入字段的ID存儲在inputArray數組中。但是,每次我選擇一個文件時,它都會將該ID添加到該數組中,但不會將其附加到該數組,因此數組中的其他所有內容都將被刪除,只剩下一個數組中的條目。

有什麼辦法讓數組數據持久化,所以每次使用文件輸入字段時都會增長?

謝謝!

回答

4
(function() { 


    var inputArray = []; 
    function updateCost(id) { 
    inputArray.push(id); 
    } 


})(); 

定義它在函數範圍之外。你並不需要附帶的anon函數,這只是我個人的風格。

+0

完美的作品,和這麼簡單,謝謝! – lewisqic 2010-08-01 00:53:20

+1

@lewisqic:考慮接受答案,如果這是你在找什麼。 – zneak 2010-08-01 01:03:26

+2

但是如果'updateCost'被定義在一個匿名函數中,那麼當更改事件被觸發時,它將是未定義的,至少在不吸引的瀏覽器中。 'updateCost'需要是全局的。 – MooGoo 2010-08-01 01:38:49

0
function updateCost(id) { 
    if(typeof updateCost.inputArray=="undefined")updateCost.inputArray=[] 
    updateCost.inputArray.push(id); 
} 

,並使陣列是 「靜態」