for (var key in obj[i]) {
dataDump[key] = textField.value;
textField.addEventListener('change', function (e) {
dataDump[key] = e.source.value;
})
}
我将我的Object中的每个键与它所映射的TextField相关联。现在,当我更改TextField时,值get存储在last key
中,而不是与textField关联的键...
我正在更改TextField
One ...其密钥为dataDump['FirstKeyName']
,但它存储在dataDump ['LastKeyName']中......
答案 0 :(得分:2)
这是正常的。你正在使用一个闭包。因此,当您在更改时进行回调时,它会搜索密钥。但是你已经完成了迭代obj和key等于obj的最后一个“条目”。
要正确关联密钥,您可以执行此操作:
for (var key in obj[i]) {
dataDump[key] = textField.value;
var callback = function(zeKey){
return function(e){
dataDump[zeKey] = e.source.value;
};
}(key);
textField.addEventListener('change', callback);
}
答案 1 :(得分:1)
在for循环中显示TextField永远不会改变!因此,在最后一个键中,您将拥有第一个将键与addEventListenerCode中的值相关联的textField。
textField var必须与循环中的每个键一起更改!