可視化工具D3.js教程 入門 (第二章)—— 選擇元素與數據綁定


 

  D3.js 就是在元素選擇與元素數據綁定的技術上進行后續操作的,所以元素選擇與數據綁定是基礎。

1、選擇器

d3.select()
d3.selectAll()

介紹下常見用法如下(這里先說下基本用法,第四章會詳細介紹):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>hello</title>
<script src="https://d3js.org/d3.v5.min.js"></script>
</head>
<body>

<h3></h3>
<h4 id="h4"></h4>
<h3 title="author"></h3>
<h3 class="date"></h3>

</body>
<script>

var h3 = d3.select("body").selectAll("h3");
var h4 = d3.select("h4");
var author = d3.select("[title='author']");
var date = d3.select(".date");
h3.text('日照香爐生紫煙');
h4.text('遙看瀑布掛前川');
author.text('李白');
date.text('2020-3-26');

</script>
</html>

運行效果:

 

 

說明D3的選擇器 跟jquery中的使用一樣  這下用起來很順手

 

 

2、數據綁定

  D3 中是通過以下兩個函數來綁定數據的:
  datum():綁定一個數據到選擇集上
  data():綁定一個數組到選擇集上,數組的各項值分別與選擇集的各元素綁定

 

首先來看datum():

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>datum</title>
    <script src="https://d3js.org/d3.v5.min.js"></script>
</head>
<body>

    <h3></h3>
    <h3></h3>
    <h3></h3>
    <h3></h3>

</body>

<script>

    var h3 = d3.selectAll('h3');
    h3.datum('我是一只小小小小鳥').text(function (v,i) {
        return '我是第'+ i +'個h3標簽,內容是:'+ v;
    })


//    運行結果如下:
//    我是第0個h3標簽,內容是:我是一只小小小小鳥
//    我是第1個h3標簽,內容是:我是一只小小小小鳥
//    我是第2個h3標簽,內容是:我是一只小小小小鳥
//    我是第3個h3標簽,內容是:我是一只小小小小鳥

</script>

</html>

 

然后再看data():

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>datum</title>
    <script src="https://d3js.org/d3.v5.min.js"></script>
</head>
<body>

<h3></h3>
<h3></h3>
<h3></h3>
<h3></h3>

</body>

<script>

    var lyrics = [
        '我是一只小小小小鳥',
        '想要飛呀飛卻飛也飛不高',
        '我尋尋覓覓尋尋覓覓一個溫暖的懷抱',
        '這樣的要求算不算太高'
    ];
    var h3 = d3.selectAll('h3');
    h3.data(lyrics).text(function (v,i) {
        return '我是第'+ i +'個h3標簽,內容是:'+ v;
    })


//    運行結果如下:
//    我是第0個h3標簽,內容是:我是一只小小小小鳥
//    我是第1個h3標簽,內容是:想要飛呀飛卻飛也飛不高
//    我是第2個h3標簽,內容是:我尋尋覓覓尋尋覓覓一個溫暖的懷抱
//    我是第3個h3標簽,內容是:這樣的要求算不算太高

</script>

</html>

 

 

細細品 能看出差別吧;

data() 中數據與選擇集元素是一一對應關系;

datum() 中是數據對應所有(多個)選擇集元素;

注意:

h3.datum('我是一只小小小小鳥'),直接綁定的一個字符串數據;

如果是在 h3.data() 方法的例子中 直接綁定一個字符串  那么運行結果就會有點出乎意料,如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>datum</title>
    <script src="https://d3js.org/d3.v5.min.js"></script>
</head>
<body>

<h3></h3>
<h3></h3>
<h3></h3>
<h3></h3>
<h3></h3>
<h3></h3>
<h3></h3>
<h3></h3>
<h3></h3>

</body>

<script>

    var h3 = d3.selectAll('h3');
    h3.data('我是一只小小小小鳥').text(function (v,i) {
        return '我是第'+ i +'個h3標簽,內容是:'+ v;
    })

//
//    運行結果如下:
//    我是第0個h3標簽,內容是:我
//    我是第1個h3標簽,內容是:是
//    我是第2個h3標簽,內容是:一
//    我是第3個h3標簽,內容是:只
//    我是第4個h3標簽,內容是:小
//    我是第5個h3標簽,內容是:小
//    我是第6個h3標簽,內容是:小
//    我是第7個h3標簽,內容是:小
//    我是第8個h3標簽,內容是:鳥

</script>

</html>

 

當然 data()方法中 參數還可以是一個 function () { return array };但是一定要是有返回值的函數。

 

 



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM