D3.js D3:数据对象中的值已更改,但表中的值未更新

D3.js D3:数据对象中的值已更改,但表中的值未更新,d3.js,D3.js,我已经用D3创建了一个表 当我对基础数据进行更改并要求它重新绘制时,D3不会反映这些更改。我不确定我做错了什么 我没有遇到任何显示嵌套数据更新的示例 //数据 var arr=[ { “键”:“a”, “价值观”:[ { “pk”:“1”, “姓名”:“艾伦” }, { "pk":"2",, “name”:“ada” } ] }, { “键”:“b”, “价值观”:[ { "pk":"3",, “姓名”:“巴里” }, { "pk":"4",, “名称”:“债券” } ] } ]; //生成

我已经用D3创建了一个表

当我对基础数据进行更改并要求它重新绘制时,D3不会反映这些更改。我不确定我做错了什么

我没有遇到任何显示嵌套数据更新的示例

//数据
var arr=[
{
“键”:“a”,
“价值观”:[
{
“pk”:“1”,
“姓名”:“艾伦”
}, {
"pk":"2",,
“name”:“ada”
}
]
}, {
“键”:“b”,
“价值观”:[
{
"pk":"3",,
“姓名”:“巴里”
}, {
"pk":"4",,
“名称”:“债券”
}
]
}
];
//生成表
变量表=函数(数据){
变量tbody=d3。选择('tbody');
var tr=tbody.selectAll('tr')
.数据(数据、功能(d){
返回d键
});
tr.enter()
.append('tr')
.插入(“td”);
tr.exit().remove();
var td=tr.select('td');
var div=td.selectAll('div')
.数据(功能(d){
返回d值;
},功能(d){
返回d.pk;
}
);
div.exit().remove();
var divEnter=div.enter()
.append('div'))
.attr('data-pk',函数(d){
返回d.pk;
})
.文本(功能(d){
返回d.name;
});
}
//运行函数
表(arr);
//更新数据并运行函数
函数updateTable(){
var bgroup=arr[1]。值;
b组[0]['name']='lamar';
控制台日志(arr);
表(arr);
}
//分配到更新单击
$(“#更新”)。在('click',function()上{
updateTable();
});
表td{
边框:1px实心#f00;
}
表td分区{
边框:1px点#0f0;
保证金:5px;
}



您只能在输入选择中指定
.text

div.enter()
  .append('div')
  .attr('data-pk', function(d){ 
    return d.pk; 
  })
  .text(function(d){
    return d.name;
  });
// new things entering
div.enter()
  .append('div')
  .attr('data-pk', function(d){ 
    return d.pk; 
  });

// everything updating
div.text(function(d){
  return d.name;
});
您想在
更新
选择中执行以下操作:

div.enter()
  .append('div')
  .attr('data-pk', function(d){ 
    return d.pk; 
  })
  .text(function(d){
    return d.name;
  });
// new things entering
div.enter()
  .append('div')
  .attr('data-pk', function(d){ 
    return d.pk; 
  });

// everything updating
div.text(function(d){
  return d.name;
});

//数据
var arr=[
{
“键”:“a”,
“价值观”:[
{
“pk”:“1”,
“姓名”:“艾伦”
}, {
"pk":"2",,
“name”:“ada”
}
]
}, {
“键”:“b”,
“价值观”:[
{
"pk":"3",,
“姓名”:“巴里”
}, {
"pk":"4",,
“名称”:“债券”
}
]
}
];
//生成表
变量表=函数(数据){
变量tbody=d3。选择('tbody');
var tr=tbody.selectAll('tr')
.数据(数据、功能(d){
返回d键
});
tr.enter()
.append('tr')
.插入(“td”);
tr.exit().remove();
var td=tr.select('td');
var div=td.selectAll('div')
.数据(功能(d){
返回d值;
},功能(d){
返回d.pk;
}
);
div.exit().remove();
var divEnter=div.enter()
.append('div'))
.attr('data-pk',函数(d){
返回d.pk;
});
分区文本(功能(d){
返回d.name;
});
}
//运行函数
表(arr);
//更新数据并运行函数
函数updateTable(){
var bgroup=arr[1]。值;
b组[0]['name']='lamar';
控制台日志(arr);
表(arr);
}
//分配到更新单击
$(“#更新”)。在('click',function()上{
updateTable();
});
表td{
边框:1px实心#f00;
}
表td分区{
边框:1px点#0f0;
保证金:5px;
}



您只能在输入选择中指定
.text

div.enter()
  .append('div')
  .attr('data-pk', function(d){ 
    return d.pk; 
  })
  .text(function(d){
    return d.name;
  });
// new things entering
div.enter()
  .append('div')
  .attr('data-pk', function(d){ 
    return d.pk; 
  });

// everything updating
div.text(function(d){
  return d.name;
});
您想在
更新
选择中执行以下操作:

div.enter()
  .append('div')
  .attr('data-pk', function(d){ 
    return d.pk; 
  })
  .text(function(d){
    return d.name;
  });
// new things entering
div.enter()
  .append('div')
  .attr('data-pk', function(d){ 
    return d.pk; 
  });

// everything updating
div.text(function(d){
  return d.name;
});

//数据
var arr=[
{
“键”:“a”,
“价值观”:[
{
“pk”:“1”,
“姓名”:“艾伦”
}, {
"pk":"2",,
“name”:“ada”
}
]
}, {
“键”:“b”,
“价值观”:[
{
"pk":"3",,
“姓名”:“巴里”
}, {
"pk":"4",,
“名称”:“债券”
}
]
}
];
//生成表
变量表=函数(数据){
变量tbody=d3。选择('tbody');
var tr=tbody.selectAll('tr')
.数据(数据、功能(d){
返回d键
});
tr.enter()
.append('tr')
.插入(“td”);
tr.exit().remove();
var td=tr.select('td');
var div=td.selectAll('div')
.数据(功能(d){
返回d值;
},功能(d){
返回d.pk;
}
);
div.exit().remove();
var divEnter=div.enter()
.append('div'))
.attr('data-pk',函数(d){
返回d.pk;
});
分区文本(功能(d){
返回d.name;
});
}
//运行函数
表(arr);
//更新数据并运行函数
函数updateTable(){
var bgroup=arr[1]。值;
b组[0]['name']='lamar';
控制台日志(arr);
表(arr);
}
//分配到更新单击
$(“#更新”)。在('click',function()上{
updateTable();
});
表td{
边框:1px实心#f00;
}
表td分区{
边框:1px点#0f0;
保证金:5px;
}



真不敢相信我错过了。。。谢谢真不敢相信我错过了。。。谢谢