在前面几节中反复出现了以下代码:javascript
- svg.selectAll("rect")
- .data(dataset)
- .enter()
- .append("rect")
当所选择的 rect 数量比绑定的数据 dataset 的数量少的时候,一般会用到以上代码,这一节就详细说说当被选择元素和数据数量不一致时该如何处理。java
这一节将涉及到三个函数。app
1. update() 当对应的元素正好知足时 ( 绑定数据数量 = 对应元素 )svg
实际上并不存在这样一个函数,只是为了要与以后的 enter 和 exit 一块儿说明才想象有这样一个函数。但对应元素正好知足时,直接操做便可,后面直接跟 text ,style 等操做便可。函数
2. enter() 当对应的元素不足时 ( 绑定数据数量 > 对应元素 )spa
当对应的元素不足时,一般要添加元素,使之与绑定数据的数量相等。后面一般先跟 append 操做。.net
3. exit() 当对应的元素过多时 ( 绑定数据数量 < 对应元素 )blog
当对应的元素过多时,一般要删除元素,使之与绑定数据的数量相等。后面一般要跟 remove 操做。ip
下面看看具体的用法:utf-8
- <body>
- <p>AAAAAAAAA</p>
- <p>BBBBBBBBB</p>
- <p>CCCCCCCCC</p>
-
- <script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
- <script>
-
- var dataset = [ 10 , 20 , 30 , 40 , 50 ];
-
- var update = d3.select("body").selectAll("p").data(dataset);
- var enter = update;
-
- update.text(function(d,i){
- return "update " + d;
- });
-
- enter.enter()
- .append("p")
- .text(function(d,i){
- return "enter " + d;
- });
-
- </script>
- </body>
上面的代码分别用了变量名 update 和 enter 来表示各自的部分,上面的代码的结果为:
结果图能够看到新添加的元素 enter 的部分。
改一部分代码,看看怎么用 exit 。
- var dataset = [ 10 , 20 ];
-
- var update = d3.select("body").selectAll("p").data(dataset);
- var exit = update;
-
- update.text(function(d,i){
- return "update " + d;
- });
-
- exit.exit()
- .text(function(d,i){
- return "exit";
- });
结果图为:
能够看到,调用 exit() 函数后,其实是返回没有对应数据的元素。一般咱们能够删除掉多余的元素,如:
尤为以 enter 函数的使用最为多见。由于一般用 D3 作数据可视化时,咱们都拥有须要的数据,并且数据量巨大,文档中不多有足够数量的与之对应的元素。因此要特别熟练 enter 的使用方法
本文来自:
博客为: www.ourd3js.com
csdn博客为: blog.csdn.net/lzhlzz