选择元素和绑定数据是D3最基础的内容,本文将对其进行一个简单的介绍。
在D3中,用于选择元素的函数有两个:
这两个函数返回的结果称为选择集。
例如,选择集的常见用法如下。
varbody=d3.select("body");//选择文档中的body元素varp1=body.select("p");//选择body中的第一个p元素varp=body.selectAll("p");//选择body中的所有p元素varsvg=body.select("svg");//选择body中的svg元素varrects=svg.selectAll("rect");//选择svg中所有的svg元素选择集和绑定数据通常是一起使用的。
D3有一个很独特的功能:能将数据绑定到DOM上,也就是绑定到文档上。这么说可能不好理解,例如网页中有段落元素p和一个整数5,于是可以将整数5与p绑定到一起。绑定之后,当需要依靠这个数据才操作元素的时候,会很方便。
D3中是通过以下两个函数来绑定数据的:
相对而言,data()比较常用。
假设现在有三个段落元素如下。
Apple
Pear
Banana
datum()假设有一字符串China,要将此字符串分别与三个段落元素绑定,代码如下:varstr="China";varbody=d3.select("body");varp=body.selectAll("p");p.datum(str);p.text(function(d,i){return"第"+i+"个元素绑定的数据是"+d;});绑定数据后,使用此数据来修改三个段落元素的内容,其结果如下:
第0个元素绑定的数据是China第1个元素绑定的数据是China第2个元素绑定的数据是China在上面的代码中,用到了一个无名函数function(d,i)。当选择集需要使用被绑定的数据时,常需要这么使用。其包含两个参数,其中:
例如,上述例子中:第0个元素apple绑定的数据是China。
有一个数组,接下来要分别将数组的各元素绑定到三个段落元素上。
vardataset=["Ilikedog","Ilikecat","Ilikesnake"];绑定之后,其对应关系的要求为:
调用data()绑定数据,并替换三个段落元素的字符串为被绑定的字符串,代码如下:
varbody=d3.select("body");varp=body.selectAll("p");p.data(dataset).text(function(d,i){returnd;});这段代码也用到了一个无名函数function(d,i),其对应的情况如下:
此时,三个段落元素与数组dataset的三个字符串是一一对应的,因此,在函数function(d,i)直接returnd即可。