识别对象中的键

Identifying the key in an Object

本文关键字:对象 识别      更新时间:2023-09-26
for (var key in obj[i]) {
    dataDump[key] = textField.value;
    textField.addEventListener('change', function (e) {
        dataDump[key] = e.source.value;
    })
}

我将我的对象中的每个键关联到它所映射的TextField。现在,当我改变TextField.....值get存储在last key,而不是与textField关联的键…

我正在改变TextField One…其密钥是dataDump['FirstKeyName'],但它得到的存储在dataDump['LastKeyName']…

这很正常。您正在使用闭包。当你在change上有回调时,它会搜索key。但是你已经完成了对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);
}

在for循环中,您显示的TextField永远不会改变!因此,在最后一个键中,您将拥有将键与addEventListenerCode中的值相关联的第一个textField。

textField变量必须随循环中的每个键一起更改!