使用Javascript / D3.js访问另一个对象内的对象属性

时间:2014-11-15 16:25:29

标签: 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, target: Object, value: 1 }

Source和Target属性包含具有属性的对象(它们是网络的节点),包括属性" id"。 但是当我使用:

console.log(d.target.id);

它返回" undefined"并在运行时:

console.log(d.target);

它返回一个数字,我认为它与属性" index"有关。存储在d.target中的对象。

我不明白为什么d返回一个带对象的对象(OK)而d.target似乎返回一个数字(Not OK),因此,d.target.id不会返回目标id。 / p>

我错过了什么?感谢

1 个答案:

答案 0 :(得分:1)

我猜测您正在使用强制布局或类似内容,而您的原始数据包含每个链接的源和目标ID。运行强制布局时会发生的情况是,这些数字引用会被解析为实际的节点对象。

当你执行console.log()时,这并没有发生,这意味着原始ID仍在那里,而不是对象。

日志显示不同的原因是,当您单击它们以检查成员时,将解析记录的对象。也就是说,console.log()没有显示记录时的内容,但是现在看看它是什么。到发生这种情况时,源ID和目标ID已被对象替换。

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