2016-11-28 44 views
0

我想創建多個函數,根據數據表中寫入的內容做不同的事情,並將它們存儲在對象中供以後使用。如何使用動態內容創建函數並將它們存儲在對象中?

讓我們看看這個簡單的例子:

var arrayPl = []; 
 

 
function myFunction() { 
 
    var carNames = ["Volvo", "Nissan"]; 
 
    var counter = 0; 
 
    for (var i in carNames) { 
 
    arrayPl[counter] = function() { 
 
     alert(carNames[i]); 
 
    }; 
 
    counter++; 
 
    } 
 
} 
 

 
myFunction(); 
 
arrayPl[0]();

在這裏,我想因爲有car names創造儘可能多的功能,並將它們保存在一個對象arrayPl,我可以從調用這些函數後來。
現在顯然這個例子並沒有解釋爲什麼我需要這樣做 - 但至少它顯示了我的問題,因爲第一個函數arrayPl[0]();給了我第二個汽車的名字,而不是第一個。
解釋這個背後的原因現在對我來說太複雜了,不是那麼重要(Adobe LiveCycle中的對話框) - 我只是想知道我的問題是否可能,如果是的話。

+1

* 「我只是想知道什麼我問的是一般可能」 *是的。你有什麼是正確的開始,重複解釋了爲什麼它現在還不能工作,以及如何解決它。 –

+0

thx,我之前沒有發現重複! –

回答

1

我prefere這句法:

var arrayPl = []; 
 

 
function myFunction() { 
 
    var carNames = ["Volvo", "Nissan"]; 
 

 
    carNames.forEach(function(element, i) { 
 
    arrayPl[i] = function() { 
 
     alert(carNames[i]); 
 
    } 
 
    }) 
 
} 
 

 
myFunction(); 
 
arrayPl[0]();

+0

THX,在這裏解決了我的問題 - 不幸的是它仍然沒有工作我的實際問題......但我想我會再次問另一個問題,一旦我搞清楚要問什麼的這段時間哈哈 –

+0

希望你能找到你的答案; ) –

+0

我沒有幸運 - 這只是一個錯字,並沒有什麼太大的 - 我仍然不明白的是:什麼是我原來的方法的問題? –

相關問題