我是d3的新手,我正在尝试调整Mike Bostock的Treemap示例(http://bl.ocks.org/mbostock/4063582)。以下是我想要实现的目标:
1)通过提交按钮从用户处获取文本输入;
2)找到包含文本输入的节点(来自树);
3)更改这些节点的背景属性。
为了使我的问题更简单,有没有办法根据元素的文本内容过滤(子集)元素?
例如,如果我有以下四个p元素,我可以执行类似下面的操作将Cathy更改为红色吗?
d3.selectAll("p")
.filter(function(d) { return d.text === Cathy; })
.attr("color", "red");
<p>Alice</p>
<p>Ben</p>
<p>Cathy</p>
<p>Daniel</p>
任何意见将不胜感激。
答案 0 :(得分:2)
如果现有元素已经有绑定到它们的数据,包括用于设置文本的“text”元素,那么您的示例代码将立即起作用(除了引用字符串“Cathy”)。
如果没有,您只需进行一些小修改 - 如果元素的实际文本内容未存储在数据中,您将需要使用this
来获取它:
d3.selectAll("p")
.filter(function(d) { return d3.select(this).text() === "Cathy"; })
.attr("color", "red");