Jquery 在多维度关联javascript对象中向动态键动态添加值

Jquery 在多维度关联javascript对象中向动态键动态添加值,jquery,arrays,object,Jquery,Arrays,Object,我放弃搜索 我想在Javascript中创建一个对象,该对象在表单字段发生变化时,第一级填充一个ID,第二级填充一个名称-值对 var ch = {}; $('.trackchanges').change(function() { var id = $(this).parents('form').attr('id'); var name = $(this).attr('name'); var value = $(this).val();

我放弃搜索

我想在Javascript中创建一个对象,该对象在表单字段发生变化时,第一级填充一个ID,第二级填充一个名称-值对

var ch = {};

    $('.trackchanges').change(function() {
        var id = $(this).parents('form').attr('id');
        var name = $(this).attr('name');
        var value = $(this).val();

        ch[id] = {};
        ch[id][name] = value;
    });
上面的代码不起作用。每次运行代码时,该值都会重置。我假设这与需要使用某种push
ch.push(key->value)
有关


非常感谢您的帮助。

示例HTML

此HTML包含两个表单,以证明JavaScript解决方案(如下)不会导致表单之间的更改冲突


JavaScript(使用jQuery)

$(.trackChanges”)。关于(“更改”,函数(事件){
变量输入=$(此),
表单=输入。父项(“表单”),
data=form.data(“变更”)| |{};
//记录新的变化
数据[input.attr('name')]=input.val();
//保存更改
表格。数据(“变更”,数据);
});
$(“表格”)。在“提交”上,功能(事件){
var data=$(this).data(“变更”)| |{};
控制台日志(数据);
//现在只输出更改
event.preventDefault();
});


我认为这是一个更好的解决方案,因为它使用将更改绑定到每个表单,然后您可以随时调用该信息

这意味着您不必使用表单ID进行任何形式的更改跟踪


在这里尝试以身作则,所以我要解决这个问题:

我假设这与需要使用某种push
ch.push(key->value)

上述代码的问题与
[]无关。请按
。代码中最明显的错误是每次触发
onchange
事件时,您都在运行这段代码

ch[id] = {};

这实质上是对先前保存的更改进行了核弹处理。

我认为这也是一个更好的主意!我会试试看,让你知道:)你能解释一下这是怎么回事吗<代码>数据=form.data(“更改”)| |{}什么是
.data(“更改”)
?这非常有效,但我想知道为什么:)它将
form.data(“changes”)
分配给
data
,但如果它为空(或未定义),它将分配一个空对象(
{}