DOM-DOMTree-查找
1. 什么是DOM: Document Object Model
专门操作网页内容的API
js=ES+DOM+BOM
DOM是由W3C指定的API标准
为什么: 为了统一各个浏览器操作网页内容的API标准
用DOM标准操作网页内容,几乎100%兼容
能做什么: 增删改查,事件绑定
2. DOM Tree:
什么是: 内存中保存所有网页内容的树型结构
为什么: 树型结构是最灵活,最直观保存层级关系的结构
何时: 当浏览器读到一个网页文件时,会从上到下顺序读取文件中的内容(元素,属性,文本)
并在内存中,构建树结构,保存网页中所有内容
DOM只有唯一的一个根节点: document 指代整个网页
网页中所有内容都是DOM树上的节点对象
节点对象的公共父类型: Node
三个公共属性:
.nodeType: 节点类型:
值是一个数字:
1 element
2 attribute
3 text
9 document
何时: 区分节点的类型时
问题: 无法进一步区分元素的名称
.nodeName: 节点名
值是一个字符串
element 全大写标签名
attribute 属性名
text #text
document #document
何时: 只要精确区分元素的名称时
.nodeValue: 节点值
几乎不用:
element null
attribute 属性值
text 文本内容
document null
3. 查找: 4种:
1. 不需要查找就可直接获得的元素: 4种:
document.documentElement html
document.head head
document.body body
document.forms[i/id] form
2. 按节点间关系查找:
节点树: 包含所有网页内容的树结果
2大类:
1. 父子关系: 4个
.parentNode 父节点 返回一个节点
.childNodes 直接子节点 返回多个节点的类数组对象
.firstChild 第一个直接子节点
.lastChild 最后一个直接子节点
2. 兄弟关系:
.previousSibling 前一个兄弟
.nextSibling 后一个兄弟
问题: 受看不见的空字符的干扰
解决: 元素树:
元素树: 仅包含元素节点的树结构
2大类:
1. 父子关系: 4个
.parentElement 父元素
.children 直接子元素
.firstElementChild 第一个直接子元素
.lastElementChild 最后一个直接子元素
2. 兄弟关系:
.previousElementSibling 前一个兄弟元素
.nextElementSibling 后一个兄弟元素
说明: 元素树不是一棵新树,只是节点树的子集
元素树有兼容性问题
问题: 只能在先获得一个节点对象的情况下,找周围附近的节点
解决: 用HTML特征查找
3. 按HTML特征查找: 4种:
1. 按id查找1个元素
var elem=document.getElementById(id);
强调: ById只能用document调用
2. 按标签名查找多个元素:
var elems=parent.getElementsByTagName(标签名)
强调:可用任意父元素调用
不仅查找直接子元素,且在所有后代中查找
3. 按name属性查找多个元素:
var elems=document.getElementsByName(name)
强调: 只能用document调用
4. 按class查找多个元素:
var elems=parent.getElementsByClassName(class)
强调: 可在任意父元素上调用
只要一个class与之匹配,就选择该元素
动态集合(live collection):
什么是: 不实际存储数据,每次访问集合,都重新查找DOM树。
为什么: 首次查找不必准备完整数据,就可快速返回
缺点: 如果反复访问集合,会导致反复查找DOM树
何时: childNodes, children, getElementsByXX()都返回动态集合
不好的遍历: for(var i=0;i<children.length;i++)
好的遍历: for(var i=0,len=children.length;i<len;i++)
DOM-DOMTree-查找的更多相关文章
- DOM元素查找
一.DOM是document的缩写,他是操作html文档的方法 二.常用查找元素的方法 直接 1.document.getElementById('标签的id') 在html中标签的id是不允许重 ...
- DOM遍历查找结点
一.遍历API(2个) 1.深度优先原则遍历NodeIterator 节点迭代器 创建遍历API对象: var iterator=document.createNodeIterator(开始的父节点对 ...
- JS操作DOM节点查找
JS中常用的DOM操作事件,包括有节点查找,键盘鼠标事件等等,本文内容介绍DOM的节点查找. <script> window.onload = function(){ //children ...
- DOM的查找,新增,删除操作
查找 1. document.getElementById() 通过ID获取元素,由于ID唯一,所以获取的是一个元素 2. document.getElementsByTagName() 通过标签名 ...
- DOM的查找与操作
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- dom node 查找父级parentNode
var o = document.querySelectorAll("a[href='baidu.com']"); var p = o[o.length-1];console.lo ...
- (二)Jsoup 查找 DOM 元素
第一节: Jsoup 查找 DOM 元素 getElementById(String id) 根据 id 来查询 DOM getElementsByTag(String tagName) 根据 tag ...
- DOM节点的创建、插入、删除、查找、替换
在前端开发中,js与html联系最紧密的莫过于对DOM的操作了,本文为大家分享一些DOM节点的基本操作. 一.创建DOM节点 使用的命令是 var oDiv = document.createElem ...
- dom 操作
1.dom 的查找 (1)根据id 查找 var object = document.getElementById("id 值"): (2)根据 name 查找:返回 dom 对象 ...
- jQuery学习笔记(二)jQuery中DOM操作
目录 DOM操作分类 jQuery中的各种DOM操作 查找节点 创建节点 删除节点 复制节点 替换节点 包裹节点 属性操作 样式操作 对HTML.文本和值的操作 遍历节点 CSS-DOM操作 小结 本 ...
随机推荐
- 修改nginx日志格式为json
Nginx 日志默认为普通文本的格式 /Oct/::: +] "https://boss.zbt.com/finance/partner/create-account-gateway?id= ...
- 源码调用ffmpeg库时,需要注意接口为C接口
即引用相关头文件时候,要使用extern "C"{}来包含. 关于extern "C"{}的详情,参考:http://www.cnblogs.com/skyne ...
- navicat连接虚拟机中mysql"Access denied for user'root'@'IP地址'"问题
登陆要链接的服务器上的mysql 命令:mysql -uroot -p123456 然后执行 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED ...
- Mac安装MySQL数据库
一 下载及安装社区版MySQL和MySQL Workbench. 二 如果MySQL Workbench无法登陆,则系统偏好设置-MySQL-Initialize Database,选择legacy开 ...
- Chrome格式化JavaScript代码
很多第三方插件的脚本,是压缩后的代码,甚至时动态加载的,代码只有一行. Chrome提供了格式化脚本代码的功能,方便加断点调试. 1 在Sources面板中,点击脚本名称,打开脚本源码. 2 点击左下 ...
- go语言net包udp socket的使用
udp与tcp的不同在于客户端请求方式不同,udp缺少Accept函数. 一个简单的udp客户端: package main; import ( "net" "log&q ...
- mysql分组后将未分组的列合并成行GROUP BY,GROUP_CONCAT
今天遇到一个问题,消息通知可以同时发送给多个班级,而查询消息通知的时候并不需要根据班级分组,如何把多个班级的名称合并成一行数据追加到消息通知的后面呢 然后就发现了 group_concat: SELE ...
- C#做一个写txt文件流的测试,为什么配置低的机器写入的还快
测试机:笔记本i7 8G 固态硬盘 由于采取读码写入txt方式, 读码频率挺高,文件名为日期格式,当前采用每次读码打开文件写入的方式, 为什么没用sb,因为怕断电情况的数据丢失.所以采取每条存入的方式 ...
- RoCE vs iWARP
两种以太网 RDMA 协议: iWARP 和 RoCE 转载 2017年03月08日 16:10:09 1510 http://weibo.com/p/1001603936363903889917?m ...
- 三分钟分布式CAP理论
分布式系统架构理论,定义了三种指标,理论说我们最多只能满足两个. ## 分布式系统 首先我们这个理论所说的分布式系统,是指系统内会共享数据,互相有连接有交互,才能完成系统功能的的分布式系统.而这个理论 ...