Javascript 获取多个DOM元素的文本,以便稍后在D3.js中重用

Javascript 获取多个DOM元素的文本,以便稍后在D3.js中重用,javascript,d3.js,Javascript,D3.js,我在提取多个元素的文本以便稍后在列表中重用时遇到了一些问题。我正在获取包含整个DOM元素的数组,但无法仅获取文本,如下所示: // this works... form.selectAll("legend").each(function(d,i) { console.log("text: " + i + " is " + d3.select(this).text()) }) 这是我的密码: var form = d3.select("#print-form"), progress

我在提取多个
元素的文本以便稍后在列表中重用时遇到了一些问题。我正在获取包含整个DOM元素的数组,但无法仅获取文本,如下所示:

// this works...
form.selectAll("legend").each(function(d,i) {
  console.log("text: " + i + " is " + d3.select(this).text())
})
这是我的密码:

var form = d3.select("#print-form"),
    progress = d3.select("#progress"),
    steps = form.selectAll("legend").nodes();

progress
    .selectAll("li")
    .data(steps)
    .enter()
    .append("li")
    .text(function(d,i) { return d ? "Step " + (i + 1) + ": " + this.text() : "err"; });
HTML:

      打印类型 产品 风格 材料 完成 传送 你的细节


我的错误在哪里?

绑定到li元素的数据是dom元素(节点)的数组。因此,您必须将变量
d
转换为d3选择以应用文本函数

改变

return d ? "Step " + (i + 1) + ": " + this.text() : "err";

var form=d3.选择(“打印表单”),
进度=d3。选择(“进度”),
st=[“一”、“二”、“三”],
步骤=form.selectAll(“图例”).nodes();
进步
.selectAll(“li”)
.数据(步骤)
.输入()
.附加(“li”)
.文本(功能(d,i){
返回d?“步骤”+(i+1)+:“+d3.select(d).text():“err”;
});

    打印类型 产品 风格 材料 完成 传送 你的细节
    就在你以为自己已经看到了一切的时候。。。起初,我认为这是胡说八道<代码>选择(d)
    -phhhh;-)此外,在三元运算符中混合字符串
    :“
    并不能真正提高可读性。抢手货我从未见过,也不会想到d3。请选择(d),谢谢!我想知道我是否把事情复杂化了,还有更好的方法吗?
    return d ? "Step " + (i + 1) + ": " + this.text() : "err";
    
    return d ? "Step " + (i + 1) + ": " + d3.select(d).text() : "err";