Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript D3选择html——传递函数时,索引从1开始,而不是从0开始_Javascript_Arrays_D3.js - Fatal编程技术网

Javascript D3选择html——传递函数时,索引从1开始,而不是从0开始

Javascript D3选择html——传递函数时,索引从1开始,而不是从0开始,javascript,arrays,d3.js,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("

我对这种行为感到困惑,希望有人能有所了解。我有一个数组定义为:

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。有人能看出这有什么问题吗


谢谢

元素中似乎已经有一个ID为
d3 sizemap hr

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

我有以下建议:

  • 始终为使用D3动态添加的元素创建一个唯一的类
  • 对于
    .enter()
    状态,例如您的
    .append()
    以及任何其他不会随数据变化而变化的静态样式,应尽可能减少。其他一切都处于更新状态

我刚刚尝试了你的代码,得到了CPL,我所做的只是将d3大小映射hr更改为body。您是否可能有一些与隐藏/阻止它的d3 sizemap hr相关的CSS?您是否已经在
#d3 sizemap hr
中有了
。是的,我有一个垫片。移除它,效果非常好。想加上这个作为答案,我会接受吗?谢谢谢谢你的建议。我能够在D3中构建一些东西,但我仍然没有完全掌握进入/更新/退出的基本原理。一步一步地到达那里。再次感谢!我发现迈克·博斯托克对我了解这些东西很有帮助。我知道你的意思,电影。我觉得很有帮助。对我来说,只看一次好的解释是不够的。这需要练习。