• 第四章 选择、插入、删除元素
    • 如何选择元素
      • 选择第一个 p 元素
      • 选择三个 p 元素
      • 选择第二个 p 元素
      • 选择后两个 p 元素
    • 插入元素
      • append()
      • insert()
    • 删除元素

    第四章 选择、插入、删除元素

    本章介绍在 D3 中选择、插入、删除元素的方法。

    插入删除元素

    如何选择元素

    上一章已经讲解了 select 和 selectAll,以及选择集的概念。本节具体讲解这两个函数的用法。

    假设在 body 中有三个段落元素:

    1. <p>Apple</p>
    2. <p>Pear</p>
    3. <p>Banana</p>

    现在,要分别完成以下四种选择元素的任务。

    选择第一个 p 元素

    使用 select ,参数传入 p 即可,如此返回的是第一个 p 元素。

    1. t("p");
    2. p1.style("color","red");

    结果如下图,被选择的元素标记为红色。

    选择第一个元素

    选择三个 p 元素

    使用 selectAll 选择 body 中所有的 p 元素。

    1. var p = body.selectAll("p");
    2. p.style("color","red");

    结果如下:

    选择三个元素

    选择第二个 p 元素

    有不少方法,一种比较简单的是给第二个元素添加一个 id 号。

    Pear

    然后,使用 select 选择元素,注意参数中 id 名称前要加 # 号。

    1. var p2 = body.select("#myid");
    2. p2.style("color","red");

    结果如下:

    选择第二个元素

    选择后两个 p 元素

    给后两个元素添加 class,

    1. <p class="myclass">Pear</p>
    2. <p class="myclass">Banana</p>

    由于需要选择多个元素,要用 selectAll。注意参数,class 名称前要加一个点。

    1. var p = body.selectAll(".myclass");
    2. p.style("color","red");

    结果如下:

    选择后两个元素

    关于 select 和 selectAll 的参数,其实是符合 CSS 选择器的条件的,即用“井号(#)”表示 id,用“点(.)”表示 class。

    此外,对于已经绑定了数据的选择集,还有一种选择元素的方法,那就是灵活运用 function(d, i)。我们已经知道参数 i 是代表索引号的,于是便可以用条件判定语句来指定执行的元素。

    插入元素

    插入元素涉及的函数有两个:

    • append():在选择集末尾插入元素
    • insert():在选择集前面插入元素

    假设有三个段落元素,与上文相同。

    append()

    1. body.append("p")
    2. .text("append p element");

    在 body 的末尾添加一个 p 元素,结果为:

    1. Apple
    2. Pear
    3. Banana
    4. append p element

    insert()

    在 body 中 id 为 myid 的元素前添加一个段落元素。

    1. body.insert("p","#myid")
    2. .text("insert p element");

    已经指定了 Pear 段落的 id 为 myid,因此结果如下。

    1. Apple
    2. insert p element
    3. Pear
    4. Banana

    删除元素

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

    1. var p = body.select("#myid");
    2. p.remove();

    如此即可删除指定 id 的段落元素。