D3选择html - 当传递函数时索引从1开始而不是0

时间:2015-03-30 02:25:41

标签: javascript arrays d3.js

我对此行为感到困惑,并希望有人可能会有一些见解。我有一个数组定义为:

arr_subpop_unique = ["CPL", "NAP", "NPL", "SAP", "SPL", "TPL", "UMW", "WMT", "XER"]

我的D3脚本是这样的:

var sizemapHeader = d3.select("#d3-sizemap-hr").selectAll("div")
        .data(arr_subpop_unique)
      .enter().append("div")
        .attr("class", "sizemap-hr-title ellipsis scroll_on_hover")
        .html(function(d,i){ console.log(d,i); return d; });

问题在于索引从1开始,所以我正在失去" CPL"值。我在控制台中记录了它,它明显从1而不是0开始。任何人都可以看到这个问题吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

您的元素内部似乎已<div>,ID为d3-sizemap-hr

这是一个问题的原因是您只填充.enter()状态的元素,现有div不会出现这种情况。

我有以下建议:

  • 使用D3
  • 为动态添加的元素提供唯一的类
  • .enter()状态设置最小值,例如.append(),然后根据数据更改,保持不变的任何其他静态样式。其他所有内容都处于更新状态。