d3.js中的选择元素
来源:互联网 发布:网络歌手囚鸟的歌曲 编辑:程序博客网 时间:2024/05/22 05:23
在 D3 中,用于选择元素的函数有两个:
- d3.select():是选择所有指定元素的第一个
- d3.selectAll():是选择指定元素的全部
这两个函数返回的结果称为选择集。
怎么使用这2个函数呢?看代码:
var body = d3.select("body"); //选择文档中的body元素var p1 = body.select("p"); //选择body中的第一个p元素var p = body.selectAll("p"); //选择body中的所有p元素var svg = body.select("svg"); //选择body中的svg元素var rects = svg.selectAll("rect"); //选择svg中所有的svg元素
下面我们看看这2个函数源码,在d3.js的985和990行,如下:
d3.select = function(node) { var group = [ typeof node === "string" ? d3_select(node, d3_document) : node ]; group.parentNode = d3_documentElement; return d3_selection([ group ]);};d3.selectAll = function(nodes) { var group = d3_array(typeof nodes === "string" ? d3_selectAll(nodes, d3_document) : nodes); group.parentNode = d3_documentElement; return d3_selection([ group ]);};这里可以看到,首先得到一个group对象typeof node === "string" 判断node类型为string的,如果为真,分别返回:d3_select(node, d3_document)和d3_selectAll(nodes, d3_document)
node是你要选中的元素,那么出现的d3_document和d3_documentElement分别是什么呢?请看下面这行代码的定义:var d3_document = document, d3_documentElement = d3_document.documentElement, d3_window = window;从这儿就应该明白了,document和document.documentElement,这是dom操作。
注:这是html中的知识每个载入浏览器的 HTML 文档都会成为 Document 对象。
Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问。
提示:Document 对象是 Window 对象的一部分,可通过 window.document 属性对其进行访问。
继续往下看,最后通过d3_selection()函数返回。function d3_selection(groups) { d3_subclass(groups, d3_selectionPrototype); return groups;}然后用到d3_subclass()函数,直接看代码:d3_selectionPrototype是这样定义的:var d3_selectionPrototype = d3.selection.prototype = [];继续看var d3_subclass = {}.__proto__ ? function(object, prototype) { object.__proto__ = prototype;} : function(object, prototype) { for (var property in prototype) object[property] = prototype[property];};这是什么?见过吗?其实在
Javascript中Function,Object,Prototypes,__proto__等概念是很常用的。不懂得自己查查。
可以认为__proto__是用来扩展Function的,扩展出来的函数,可以直接调用,不需要new出对象才能用,同时对象是不会扩展通过__proto__扩展的方法或属性的。
通过以上,我们对这2个函数的调用方式有了一个清楚的了解,后续直接应用就可以了。select返回一个元素;selectAll()返回一个数组,然后遍历使用。
最后上一个小demo:<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title>HelloWorld</title> <script src="../libs/d3.min.js" charset="utf-8"></script></head><body><p>Hello World 1</p><p>Hello World 2</p></body></html><script> //d3.select("body").selectAll("p").text("www.ourd3js.com"); //选择<body>中所有的<p>,其文本内容为 www.ourd3js.com,选择集保存在变量 p 中 var p = d3.select("body") .selectAll("p") .text("www.ourd3js.com"); //修改段落的颜色和字体大小 p.style("color","red") .style("font-size","72px");</script>
0 0
- d3.js中的选择元素
- d3.js选择、插入、删除元素
- d3.js-选择、插入、删除元素
- d3.js学习3----选择、插入、删除元素
- d3.js中选择元素和绑定数据
- D3.js学习-选择元素和绑定数据
- D3.JS 基于javascript的图表展示库<四>----基本元素选择与Table
- 【 D3.js 入门系列 --- 2 】 如何使用数据和选择元素
- 【 D3.js 入门系列 --- 2.1 】 关于如何选择,插入,删除元素
- D3.js中的Scale用法
- d3.js 解决——元素覆盖
- d3.js-选择集与数据
- D3学习之:D3.js中的12中地图投影方式
- D3 笔记一:选择元素、DOM 操作、绑定数据
- js选择元素
- js中选择html-table中的元素值
- D3.js中的Calendar View详解
- D3.js 中的 Non-Contiguous Cartogram详解
- Spfa算法模板
- Tyvj2017清北冬令营入学测试
- vector容器删除某些元素且释放内存
- git 常用命令
- linux文件设置权限命令umask
- d3.js中的选择元素
- 如何实现 C 语言的继承和多态
- linux系统为什么把进程的4G地址空…
- 括号序列(栈)
- Sublime Text 3 断点调试C
- c#局域网屏幕广播二三事(2)-拆包组包
- Matlab 中打开.bdf 文件
- 《自控力》读后感
- 三种编码方式