访问对象';使用Javascript/D3.js在另一个对象中设置s属性
我试图为网络的每个边缘定义一个id访问对象';使用Javascript/D3.js在另一个对象中设置s属性,javascript,d3.js,Javascript,D3.js,我试图为网络的每个边缘定义一个id (...).enter().append("svg:line") .attr("class", "edge") .attr("id", function(d) { console.log(d); return "still a test"; }); 代码打印: Object { label: "MB2 (pp) NEK6", source: Object, tar
(...).enter().append("svg:line")
.attr("class", "edge")
.attr("id", function(d) {
console.log(d);
return "still a test";
});
代码打印:
Object { label: "MB2 (pp) NEK6", source: Object, target: Object, value: 1 }
源属性和目标属性具有具有属性的对象(它们是网络的节点),包括属性“id”。
但当我使用:
console.log(d.target.id);
它返回“未定义”,运行时:
console.log(d.target);
它返回一个数字,我认为它与存储在d.target中的对象的属性“index”有关
我不明白为什么d返回一个带有object(OK)的对象,而d.target似乎返回一个数字(notok),因此d.target.id不返回目标id
我错过了什么?谢谢我猜您正在使用force布局或类似的东西,并且您的原始数据包含每个链接的源和目标ID。运行force布局时发生的情况是,这些数值引用将解析为实际的节点对象 当您执行
console.log()
时,这并没有发生,这意味着原始ID仍然存在,而不是对象
日志显示不同内容的原因是,当您单击记录的对象以检查成员时,这些对象将被解析。也就是说,console.log()
没有显示记录时的内容,而是显示您现在看到的内容。此时,源ID和目标ID已被对象替换
要修复此问题,请在对要记录的对象进行操作之前启动强制布局