识别对象中的键

时间:2011-07-27 19:37:00

标签: javascript

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']中......

2 个答案:

答案 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必须与循环中的每个键一起更改!