访问对象';使用Javascript/D3.js在另一个对象中设置s属性

访问对象';使用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

我试图为网络的每个边缘定义一个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, 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已被对象替换

要修复此问题,请在对要记录的对象进行操作之前启动强制布局