javascript - 识别对象中的键

标签 javascript

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/

相关文章:

javascript - 从动态加载的外部javascript文件访问变量

javascript - 如何捕获任何 HTML 元素上的 onKeyUp 事件?

javascript - 静态定位的控制栏,例如 Gmail for iPhone Web 应用程序?

javascript - 如何安全地评估在 JavaScript 中表示为字符串的 bool 表达式?

显示指令(占位符)文本的 Javascript 文本输入字段

javascript - Mongoose 的正则表达式不传递不从Angular的HTTP服务传递到nodejs

javascript - 人力车的正确日期格式

javascript - 从 Javascript 解析 JSON 时如何保持顺序?

javascript - webRequest 监听器看不到 'cookie' 、 'referer' 、 'origin' 等 header

javascript - Meteor - Coffeescript 助手在与 Jade 位于同一文件夹中时未触发