D3.js d3选择全部选择全部追加追加

D3.js d3选择全部选择全部追加追加,d3.js,D3.js,我想构建结构,其中每个都包含数据项 d3.select("#myDiv").selectAll("ul").selectAll("li").data(flatData).enter().append("ul").append("li").text(function(d) { return d.label; }); 我错在哪里?如果里面只有一个#myDiv和一个ul,那么: d3.select("#myDiv") .select("ul") // or .append("ul") .se

我想构建
  • 结构,其中每个
  • 都包含数据项

    d3.select("#myDiv").selectAll("ul").selectAll("li").data(flatData).enter().append("ul").append("li").text(function(d) { return d.label; });
    
    我错在哪里?

    如果里面只有一个
    #myDiv
    和一个
    ul
    ,那么:

    d3.select("#myDiv")
      .select("ul") // or .append("ul")
      .selectAll("li").data(flatData)
      .enter()
        .append("li")
        .text(function(d) { return d.label; });
    

    让我困惑的是把enter()放在哪里。我以为在enter()之前我应该选择东西,但是在添加东西之后。@ses是的,这有点让人困惑。请注意,对于
    ul
    使用
    select()
    ,对于
    li
    使用
    selectAll()
    非常重要。前者设置父上下文,后者准备将其绑定到数据。典型的d3序列selectAll-then-bind-then-append只能在一个级别上工作。如果需要创建也绑定到数据的
    ul
    元素(内部嵌套
    li
    s),则需要有两级数据(在二维数组中),并将每个元素绑定到适当的级别,并使用
    enter()
    两次。查看使用d3创建html
    table
    s的正确方法示例,以获得更好的不可理解性。