javascript - d3.js + 动态 HTML - 第一个数据点未处理 & .append 追加到错误的地方

标签 javascript html dom d3.js

我试图构建一个更加动态的页面,根据需要添加/删除内容。为此,我将子 div 动态添加到现有 div 并将内容放在那里。当我需要删除内容时,我可以删除子 div

除了 d3.js 和特别是 .enter() 方法,这对所有东西都适用。当我不使用 .enter() 方法时一切正常,但是当我使用 .enter() 时突然出现两个问题:

  1. 第一个数据点被丢弃。换句话说,它不会出现在输出中。
  2. .append() 方法将其余数据点附加到 HTML - 所以在 body 元素的结束标记之后& 不在动态创建的元素中。

允许此功能与 d3 和动态创建的 div 一起使用的原因或解决方案是什么?

来自 http://jsfiddle.net/TJNCK/1/

var area = document.querySelector("#reportArea");
area.innerHTML = "";

var reportPlacement = document.createElement("div");
reportPlacement.id = "reportPlace";
area.appendChild(reportPlacement);

var report = d3.select("#reportPlace");

report.data([1, 2, 3])
   .enter()  
   .append("div")
   .text(String);

最佳答案

您忘记选择要匹配数据的元素。您需要在 .data(...) 之前添加 .selectAll("div")。更新了 jsfiddle here .

如果您不这样做,将会发生什么情况,即数据与当前选择匹配(即 d3.select("#reportPlace")),第一个元素匹配(到现有元素)并且只附加了两个。出于同样的原因,它们最终被附加到文档的末尾——您没有通过子选择明确表示要操作的内容。

关于javascript - d3.js + 动态 HTML - 第一个数据点未处理 & .append 追加到错误的地方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18468004/

相关文章:

javascript - 单击按钮时显示一个 Div 并隐藏另一个 Div

javascript - 我在哪里使用 asp 母版页放置 javascript?

html - 如何抑制 div 悬停弹出窗口中的换行符

javascript - 读取文件时设置超时

javascript - 数组上的 .forEach() 与 NodeList (JavaScript)

html - 如何在选择元素的高度中间对齐 Font Awesome 图标?

javascript - 在 javascript 和 html 中使用变量

dom - 选择文本,然后使用 jQuery for AJAX 将其分成三部分

javascript - 什么是先读 HTML 或 JavaScript?

javascript - 更新镜像 div 中的文本后输入为空