2016-11-28 74 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

我没有幸运 - 这只是一个错字,并没有什么太大的 - 我仍然不明白的是:什么是我原来的方法的问题? –

相关问题