【 D3.js 入門系列 --- 7 】 理解 update, enter, exit 的使用

來源:互聯網
上載者:User

標籤:d3   enter   exit   update   select   

    本人的個人部落格為: www.ourd3js.com 

    csdn部落格為: blog.csdn.net/lzhlzz 

    轉載請註明出處,謝謝。

    在前面幾節中反覆出現了如下代碼:

svg.selectAll("rect")             .data(dataset)             .enter()             .append("rect") 
    當所選擇的 rect 數量比繫結資料 dataset 的數量少的時候,通常會用到以上代碼,這一節就詳細說說當被選擇元素和資料數量不一致時該如何處理。

    這一節將涉及到三個函數。

1. update()    當對應的元素正好滿足時 ( 綁定資料數量 = 對應元素 )

    實際上並不存在這樣一個函數,只是為了要與之後的 enter 和 exit 一起說明才想象有這樣一個函數。但對應元素正好滿足時,直接操作即可,後面直接跟 text ,style 等操作即可。

2. enter()    當對應的元素不足時 ( 綁定資料數量 > 對應元素 )

    當對應的元素不足時,通常要添加元素,使之與綁定資料的數量相等。後面通常先跟 append 操作。

3. exit()     當對應的元素過多時 ( 綁定資料數量 < 對應元素 )

    當對應的元素過多時,通常要刪除元素,使之與綁定資料的數量相等。後面通常要跟 remove 操作。


    下面看看具體的用法:

<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() 函數後,實際上是返回沒有對應資料的元素。通常我們可以刪除掉多餘的元素,如:
exit.exit().remove();

    尤其以 enter 函數的使用最為多見。因為通常用 D3 做資料視覺效果時,我們都擁有需要的資料,而且資料量巨大,文檔中很少有足夠數量的與之對應的元素。所以要特別熟練 enter 的使用方法




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.