我正在尝试修改链接中传递给Node对象的属性。
我收到此错误:
this.setAttribute is not a function
我想知道对select运算符有什么限制。这是我当前的实现:
function setChildrenLinkWidth(node) {
node.links().forEach(function (i) {
d3.select(i.source)
.attr("stroke", "blue");
});
}
如果有人知道,我将不胜感激。
供参考,我已经尝试
d3.select("#" + i.source)
我得到了错误:
Failed to execute 'querySelector' on 'Document': '#[object Object]' is not a valid selector.
编辑:
还有更多代码:
// Creating nodes here
let nodeEnter = node.enter().append('g')
.attr('class', 'node')
.attr("transform", function (d) {
return "translate(" + source.x0 + "," + source.y0 + ")";
})
.on('click', click);
nodeEnter.append('circle')
.attr('class', 'node')
// Functions
function setChildrenLinkWidth(node) {
node.links().forEach(function (i) {
console.log(i.source);
d3.select(i.source.id)
attr("stroke", "blue");
});
}
function click(d) {
if (d.children) {
d._children = d.children;
d.children = null;
} else {
d.children = d._children;
d._children = null;
}
update(d);
setChildrenLinkWidth(d);
}
答案 0 :(得分:0)
我认为这是因为i.source
是源节点,而不仅仅是您可能认为基于数据获取的字符串...因此,如果执行d3.select("#" + i.source.id);
将选择具有该ID的元素。除非每个链接的i.source
是一个对象。
如果您发布数据结构,我可以进一步澄清。