【 D3.js 入门系列 — 2.1 】 选择、插入、删除元素

1. select 和 selectAll 的区别

在 D3 中,选择元素的函数有两个:select 和 selectAll,它们的使用非常重要。先说明一下它们的区别:

select 是选择所有指定元素的第一个
selectAll 是选择指定元素的全部(用于同时操作)
这两个函数返回的结果称为选择集。

来看一个具体的例子,现有如下代码:

<html>
  <head>
        <meta charset="utf-8">
        <title>select,append,remove</title>
  </head>
</style>
    <body>
    <h1>This is a cat.</h1>
    <h1>That is a dog.</h1>
    <h1>I like cat.</h1>

    <script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
        <script>

        </script>  

    </body>
</html>

熟悉 HTML 的朋友一定会知道上面的代码输出什么,是三行 h1 大小的标题。

现在要完成两种选择元素的任务:

(1)选择第一个 <h1> 元素

(2)同时选择三个 <h1> 元素

代码如下:

var body = d3.select("body");           //选择body(第一个body,当然也只有一个body)
var h1 = body.select("h1");             //选择第一个h1
var all_h1 = body.selectAll("h1");      //选择所有的h1

为了证明上面的变量 h1 选择的是第一个 <h1> 元素,变量 all_h1 选择的是所有的 <h1> 元素,我们加上一行代码:

h1.style("color","red");

给 h1 变量选中的元素上色,加上这一句后,会发现结果为:

因此,可以证明选中的是第一个 <h1> 元素。

如果换上代码:

all_h1.style("color","blue");

会发现三行文字都变成了蓝色。

那么如果想选择第二个 <h1> 元素呢?正如上一节所说的,有两种方法,要么给 <h1> 加 id ,要么用无名函数 function 的形式,详细见上一章。

2. 插入元素

接下来在 <body> 里新插入一个 <h1> 元素,代码如下

var new_h1 = body.append("h1");
new_h1.text("Append new h1");

这里表示插入一个 <h1> 元素后,将其文字设为 Append new h1,结果为:

3. 删除元素

删除一个元素时,对于选择的元素,使用 remove 即可,代码如下:

new_h1.remove();

这是删除 new_h1 变量中选择的元素。

时间: 2024-12-17 00:09:43

【 D3.js 入门系列 — 2.1 】 选择、插入、删除元素的相关文章

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

本人的个人博客为: www.ourd3js.com csdn博客为: blog.csdn.net/lzhlzz 转载请注明出处,谢谢. 在前面几节中反复出现了如下代码: svg.selectAll("rect") .data(dataset) .enter() .append("rect") 当所选择的 rect 数量比绑定的数据 dataset 的数量少的时候,通常会用到以上代码,这一节就详细说说当被选择元素和数据数量不一致时该如何处理. 这一节将涉及到三个函数.

【 D3.js 入门系列 — 0 】 简介和安装

[ D3.js 入门系列 — 0 ] 简介和安装 发表于2014/06/12 近年来,可视化越来越流行,许多报刊杂志.门户网站.新闻.媒体都大量使用可视化技术,使得复杂的数据和文字变得十分容易理解,有一句谚语“一张图片价值于一千个字”,的确是名副其实.各种数据可视化工具也如井喷式地发展,D3 正是其中的佼佼者. 1. D3 是什么 D3 的全称是(Data-Driven Documents),顾名思义可以知道是一个被数据驱动的文档.听名字有点抽象,说简单一点,其实就是一个 JavaScript

【 D3.js 入门系列 --- 9.6 】 打包图的制作

本人的个人博客为:www.ourd3js.com csdn博客为:blog.csdn.net/lzhlzz 转载请注明出处,谢谢. 打包图( Pack ),用于包含与被包含的关系,也表示各个对象的权重,通常用一圆套一圆来表示前者,用圆的大小来表示后者. 先看本节所使用的数据:  city2.json 这是各城市所属关系的数据.我们现在要用 D3 的 layout 来转换数据,使其容易进行可视化处理. var pack = d3.layout.pack() .size([ width, heigh

【 D3.js 入门系列 --- 10 】 地图的绘制

本人的个人博客为:www.ourd3js.com csdn博客为:blog.csdn.net/lzhlzz 转载请注明出处,谢谢. 地图的制作在 D3 中可以说是最重要的一环.因为在进行数据可视化时,很多情况都会和地图联系在一起,如中国各省的人口多少,GDP多少等,都可以和地图联系在一起. D3 中制作地图所需要的文件问 JSON 文件.JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.关于 JSON 的语法格式,可以在: http://www.w3s

【 D3.js 入门系列 --- 9.5 】 树状图的制作

这一节学习树状图的制作.树状图的制作和集群图完全相同,经过这两种 layout 转换后的数据也很相似. 本人的个人博客为: www.ourd3js.com csdn博客为: blog.csdn.net/lzhlzz 转载请注明出处,谢谢. 树状图( Tree )通常用于表示层级.上下级.包含与被包含关系.树状图的制作和 9.4节集群图的制作 的代码几乎完全一样.不错,你没看错,几乎完全一样.那么为什么要把这两种图分开,它们有什么不同呢?先来看看对于同一组数据,它们的结果有什么不同.数据为: {

【 D3.js 入门系列 --- 9.3 】 弦图的制作

本人的个人博客为: www.ourd3js.com csdn博客为: blog.csdn.net/lzhlzz 转载请注明出处,谢谢. 弦图( Chord ),主要用于表示两个节点之间的联系.如下图: 两点之间的连线表示,谁和谁具有联系: 线的粗细表示权重: 上面的介绍源于: http://circos.ca/guide/tables/  ,我就不详细介绍了,还是很好理解的. 那么在 D3 中怎么用 layout 转换出弦图所需要的数据,并作图呢?请耐心往下看. 1. 首先给出数据 var ci

【 D3.js 入门系列 --- 9 】 常见可视化图形

本人的个人博客为: www.ourd3js.com csdn博客为: blog.csdn.net/lzhlzz 转载请注明出处,谢谢. Layout ,直译为"布局,安排".但在 D3 中不是这个意思. D3 中有很多 Layout 函数,它们不是为了在画面中布局什么,在 D3 中是对输入的数据进行转换,转换成比较容易进行可视化的数据.实际进行可视化时,需要其他的代码.我们可以简单地把 Layout 理解为"制作常见图形的函数",比如饼状图等等. D3 中一共提供了

【 D3.js 入门系列 --- 2.1 】 关于怎样选择,插入,删除元素

本人的个人博客首页为: http://www.ourd3js.com/  ,csdn博客首页为:http://blog.csdn.net/lzhlzz/. 转载请注明出处,谢谢. 在D3.js中,选择元素的函数有两个:select 和 selectAll . 先说明一下它们的差别: select 是选择所有指定元素的第一个 selectAll 是选择指定元素的所有(以用于后面同一时候操作) 来看一个详细的样例,现有例如以下代码: <html> <head> <meta cha

【 D3.js 入门系列 --- 2.1 】 关于如何选择,插入,删除元素

在D3.js中,选择元素的函数有两个:select 和 selectAll . 先说明一下它们的区别: select 是选择所有指定元素的第一个 selectAll 是选择指定元素的全部(以用于后面同时操作) 来看一个具体的例子,现有如下代码: [html] view plain copy <html> <head> <meta charset="utf-8"> <title>select,append,exit</title>