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-查找的更多相关文章

  1. DOM元素查找

    一.DOM是document的缩写,他是操作html文档的方法 二.常用查找元素的方法 直接 1.document.getElementById('标签的id')   在html中标签的id是不允许重 ...

  2. DOM遍历查找结点

    一.遍历API(2个) 1.深度优先原则遍历NodeIterator 节点迭代器 创建遍历API对象: var iterator=document.createNodeIterator(开始的父节点对 ...

  3. JS操作DOM节点查找

    JS中常用的DOM操作事件,包括有节点查找,键盘鼠标事件等等,本文内容介绍DOM的节点查找. <script> window.onload = function(){ //children ...

  4. DOM的查找,新增,删除操作

    查找 1. document.getElementById()  通过ID获取元素,由于ID唯一,所以获取的是一个元素 2. document.getElementsByTagName() 通过标签名 ...

  5. DOM的查找与操作

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  6. dom node 查找父级parentNode

    var o = document.querySelectorAll("a[href='baidu.com']"); var p = o[o.length-1];console.lo ...

  7. (二)Jsoup 查找 DOM 元素

    第一节: Jsoup 查找 DOM 元素 getElementById(String id) 根据 id 来查询 DOM getElementsByTag(String tagName) 根据 tag ...

  8. DOM节点的创建、插入、删除、查找、替换

    在前端开发中,js与html联系最紧密的莫过于对DOM的操作了,本文为大家分享一些DOM节点的基本操作. 一.创建DOM节点 使用的命令是 var oDiv = document.createElem ...

  9. dom 操作

    1.dom 的查找 (1)根据id 查找 var object = document.getElementById("id 值"): (2)根据 name 查找:返回 dom 对象 ...

  10. jQuery学习笔记(二)jQuery中DOM操作

    目录 DOM操作分类 jQuery中的各种DOM操作 查找节点 创建节点 删除节点 复制节点 替换节点 包裹节点 属性操作 样式操作 对HTML.文本和值的操作 遍历节点 CSS-DOM操作 小结 本 ...

随机推荐

  1. oracle 调用包体的函数并返回return值

    /// <summary> /// 执行数据库包体操作,返回结果 /// </summary> /// <param name="cmdText"&g ...

  2. 网页性能优化:防止JavaScript、CSS阻塞浏览器渲染页面

    网页中引用的外部文件: JavaScritp.CSS 等常常会阻塞浏览器渲染页面.假设在 <head> 中引用的某个 JavaScript 文件由于各种不给力需要2秒来加载,那么浏览器渲染 ...

  3. dedecms迁站

    1  后台>系统>备份数据库 2  下载“所有(强调一下是所有:包括整站程序与备份的数据)”原站的数据,整个站点 3  将下载下来的所有数据上传到新空间 4  删除install目录下的i ...

  4. 原生js,通过document.getElementByClassName获取元素的索引值

    let itemList = document.getElementsByClassName('sky-item') // 一行所有元素 let index = 0 for(let i = 0; i& ...

  5. vue 登录前做校验this.$router.push(location)

    有很多按钮在执行跳转之前,还会执行一系列方法,这时可以使用 this.$router.push(location) 来修改 url,完成跳转 例如:登录按钮,点击时需要先判断验证码等是否正确,此时

  6. 【Linux 进程】fork函数详解

    一.fork入门知识 一个进程,包括代码.数据和分配给进程的资源.fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同, ...

  7. 用java修改文件的编码

    1.将本地的文件转换成另外一种编码输出,主要逻辑代码如下: /** * 将本地文件以哪种编码输出 * @param inputfile 输入文件的路径 * @param outfile 输出文件的路径 ...

  8. Linux下more命令C语言实现实践 (Unix-Linux编程实践教程)

    1. more第一版 实现基础功能,显示每一页固定24行文本,“q Enter”退出, “Enter” 下一行, “space Enter”下一页. #include<stdio.h> # ...

  9. linux ubuntu设置root用户初始密码

    输入 sudo passwd 命令,输入一般用户密码并设定root用户密码. 设定root密码成功后,输入 su 命令,并输入刚才设定的root密码,就可以切换成root了. 提示符$代表一般用户,提 ...

  10. 线特征---LSD and LBD程序运行(一)

    最近在看有关特征提取的线特征,暑期就看了相关的论文:<基于点线综合特征的双目视觉SLAM方法_谢晓佳>,最近呢,把里面有关线特征提取LSD和描述子LBD的代码跑了一遍,记录如下: [1]L ...