for (var key in obj[i]) {
dataDump[key] = textField.value;
textField.addEventListener('change', function (e) {
dataDump[key] = e.source.value;
})
}
我将对象中的每个键与其映射的 TextField 相关联。现在,当我更改 TextField... 值存储在 last key
中,而不是与 textField 关联的键...
我正在更改 TextField
One...其 key 是 dataDump['FirstKeyName']
,但它存储在 dataDump['LastKeyName'] 中。 .
最佳答案
这很正常。您正在使用闭包。因此,当您有更改回调时,它会搜索键。但是您已经完成了对 obj 的迭代,并且 key 等于 obj 的最后一个“条目”。
要正确关联 key ,您可以执行以下操作:
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);
}
关于javascript - 识别对象中的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6850222/