图形化开发(二)03-D3.js之基本使用——选择-select()、插入-append()末尾插入和insert()前面插入、删除元素-remove()
选择、插入、删除元素
已经讲解了 select 和 selectAll,以及选择集的概念。本节具体讲解这两个函数的用法。
假设在 body 中有三个段落元素:
<p>Apple</p>
<p>Pear</p>
<p>Banana</p>
现在,要分别完成以下四种选择元素的任务。
选择第一个 p 元素
t("p");
p1.style("color","red");
选择三个 p 元素
var p = body.selectAll("p");
p.style("color","red");
选择第二个 p 元素
有不少方法,一种比较简单的是给第二个元素添加一个 id 号。
Pear
然后,使用 select 选择元素,注意参数中 id 名称前要加 # 号。
var p2 = body.select("#myid");
p2.style("color","red");
选择后两个 p 元素
给后两个元素添加 class,
<p class="myclass">Pear</p>
<p class="myclass">Banana</p>
由于需要选择多个元素,要用 selectAll。注意参数,class 名称前要加一个点。
var p = body.selectAll(".myclass");
p.style("color","red");
实例-selector
效果
selector.html
<html>
<head>
<meta charset="utf-8">
<title>HelloWorld</title>
</head>
<body>
<p>Hello World 1</p>
<p>Hello World 2</p>
<p class="p2">Hello World 1</p>
<p class="p2">Hello World 2</p>
<p>Hello World 1</p>
<p>Hello World 2</p>
<script src="https://d3js.org/d3.v5.js"></script>
<script>
// var paragraphs = document.getElementsByTagName("p");
// for (var i = 0; i < paragraphs.length; i++) {
// var paragraph = paragraphs.item(i);
// paragraph.innerHTML = "I like dog.";
// }
// 1. 获取dom
// 2. 修改内容
// select只会选中第一个标签
// d3可以完美支持css选择器
d3.select("body").selectAll(".p2").text("www.ourd3js.com").style('color' , 'red').style('font-size', '30px')
</script>
</body>
</html>
插入元素
插入元素涉及的函数有两个:
- append():在选择集末尾插入元素
- insert():在选择集前面插入元素
假设有三个段落元素,与上文相同。
append()
body.append("p")
.text("append p element");
在 body 的末尾添加一个 p 元素,结果为:
Apple
Pear
Banana
append p element
实例-append
效果
代码
<html>
<head>
<meta charset="utf-8">
<title>HelloWorld</title>
</head>
<body>
<p>Hello World 1</p>
<p>Hello World 2</p>
<!-- <h1></h1> -->
<p class="p2">Hello World 1</p>
<p class="p2">Hello World 2</p>
<p>Hello World 1</p>
<p>Hello World 2</p>
<script src="https://d3js.org/d3.v5.js"></script>
<script>
// var paragraphs = document.getElementsByTagName("p");
// for (var i = 0; i < paragraphs.length; i++) {
// var paragraph = paragraphs.item(i);
// paragraph.innerHTML = "I like dog.";
// }
// 1. 获取dom
// 2. 修改内容
// select只会选中第一个标签
// d3可以完美支持css选择器
d3.select("body").select(".p2").append("h1").text('append');
// 1. select一定要通过父级调用, 传入2个参数 1. 标签名 2. 在谁前面插入
// d3.select("body").insert('h1', '.p2').text('insert');
// d3.select("body").remove()
</script>
</body>
</html>
insert()
在 body 中 id 为 myid 的元素前添加一个段落元素。
body.insert("p","#myid")
.text("insert p element");
已经指定了 Pear 段落的 id 为 myid,因此结果如下。
Apple
insert p element
Pear
Banana
实例-insert
效果
代码
<html>
<head>
<meta charset="utf-8">
<title>HelloWorld</title>
</head>
<body>
<p>Hello World 1</p>
<p>Hello World 2</p>
<!-- <h1></h1> -->
<p class="p2">Hello World 1</p>
<p class="p2">Hello World 2</p>
<p>Hello World 1</p>
<p>Hello World 2</p>
<script src="https://d3js.org/d3.v5.js"></script>
<script>
// var paragraphs = document.getElementsByTagName("p");
// for (var i = 0; i < paragraphs.length; i++) {
// var paragraph = paragraphs.item(i);
// paragraph.innerHTML = "I like dog.";
// }
// 1. 获取dom
// 2. 修改内容
// select只会选中第一个标签
// d3可以完美支持css选择器
// d3.select("body").select(".p2").append("h1").text('append');
// 1. select一定要通过父级调用, 传入2个参数 1. 标签名 2. 在谁前面插入
d3.select("body").insert('h1', '.p2').text('insert');
// d3.select("body").remove()
</script>
</body>
</html>
删除元素
删除一个元素时,对于选择的元素,使用 remove 即可,例如:
var p = body.select("#myid");
p.remove();
实例-remove
效果
代码
<html>
<head>
<meta charset="utf-8">
<title>HelloWorld</title>
</head>
<body>
<p>Hello World 1</p>
<p>Hello World 2</p>
<!-- <h1></h1> -->
<p class="p2">Hello World 1</p>
<p class="p2">Hello World 2</p>
<p>Hello World 1</p>
<p>Hello World 2</p>
<script src="https://d3js.org/d3.v5.js"></script>
<script>
// var paragraphs = document.getElementsByTagName("p");
// for (var i = 0; i < paragraphs.length; i++) {
// var paragraph = paragraphs.item(i);
// paragraph.innerHTML = "I like dog.";
// }
// 1. 获取dom
// 2. 修改内容
// select只会选中第一个标签
// d3可以完美支持css选择器
// d3.select("body").select(".p2").append("h1").text('append');
// 1. select一定要通过父级调用, 传入2个参数 1. 标签名 2. 在谁前面插入
// d3.select("body").insert('h1', '.p2').text('insert');
// d3.select("body").remove()
d3.select(".p2").remove()
</script>
</body>
</html>