D3.js 更新并输入D3JS
我有一个4元素的数据集,并将这些数据附加到页面中的一个div中(请参阅下面的代码) 问题1)静态输入的“我已经在这里”的“p”保持原样。然而,我希望它能在“1”中更新 问题2)当我将数据重新输入html时,我希望结果是D3.js 更新并输入D3JS,d3.js,D3.js,我有一个4元素的数据集,并将这些数据附加到页面中的一个div中(请参阅下面的代码) 问题1)静态输入的“我已经在这里”的“p”保持原样。然而,我希望它能在“1”中更新 问题2)当我将数据重新输入html时,我希望结果是1,2,3,4,1,2,3,4。但是,输出是我已经在这里了,2,3,4,2,3,4。为什么在重新输入数据时跳过数据数组的第一个元素(1) 你知道吗 以下是我的html文件的正文: 结果如下: 您可以找到JSFIDLE。当您调用enter时,它只适用于新元素。因为你原来有一个“”,所
1,2,3,4,1,2,3,4
。但是,输出是我已经在这里了,2,3,4,2,3,4
。为什么在重新输入数据时跳过数据数组的第一个元素(1)
你知道吗
以下是我的html文件的正文:
结果如下:
您可以找到JSFIDLE。当您调用
enter
时,它只适用于新元素。因为你原来有一个“”,所以什么都没有发生。管理此问题的一种方法是执行以下操作:
// this adds the paragraphs that are missing
paragraphs.enter().append('p');
// This will update all text
paragraphs.text(function(d) { return d; });
如果您希望它为您提供1234
,您将遇到一些问题,因为第一个元素已经存在,因此您将以1234
结束。您必须使数据集更大,这可以使用concat
轻松完成,如下所示:
var paragraphs = svg.select("div").selectAll("p").data(data.concat(data));
你可以这样想:
- 您的
将获取所有现有的selectAll
将对任何新事物产生影响,即比第一个enter
- 完成
操作后,在enter
段落上调用
,这是一种更新所有元素的方法text
enter
时,它又一次只检查了缺失的部分,这就是为什么你只得到了2-4
我希望这会有所帮助。这可能会有所帮助
I was already here
2
3
4
2
3
4
// this adds the paragraphs that are missing
paragraphs.enter().append('p');
// This will update all text
paragraphs.text(function(d) { return d; });
var paragraphs = svg.select("div").selectAll("p").data(data.concat(data));