目录

  1. 获取元素的两种方式
  2. 节点的概述
  3. 节点层级
    3.1 父级节点
    3.2 父子节点
    3.3 兄弟节点
  4. 创建节点
  5. 删除节点
  6. 复制节点(克隆节点)
  7. 三种创建元素的区别

正文

1. 获取元素的两种方式

(1)利用DOM提供的方法获取元素

  • document.getElementById()
  • document.getElementsByTagName()
  • document.querSelector等
  • 逻辑性不强、繁琐

(2)利用节点层级关系获取元素

  • 利用父子兄弟节点关系获取元素
  • 逻辑性强,但兼容性差

2. 节点的概述


一般的,节点至少拥有nodeType(节点类型)、nodeName(节点名称)和nodeValue(节点值)这三个基本属性

  • 元素节点 nodeType为1
  • 属性节点nodeType为2
  • 文本节点nodeType为3(文本节点包含文字、空格、换行等)

3. 节点层级

3.1 父级节点

利用DOM树可以把节点划分为不同的层级关系,常见的是父子兄层级关系

node.parentNode

  • parentNode属性可返回某节点的父节点,注意是最近的一个父节点
  • 如果指定的节点没有父节点则返回null

3.2 子节点

parentNode.childNodes(标准)

parentNode.childNodes返回包括指定节点的子节点的集合,该集合为即时更新的集合

注意:返回值里面包括了所有的子节点,包括元素节点,文本节点等。

如果想到获得里面的元素节点,则需要专门处理,所以我们一般不提倡使用childNodes

var ul = document.querySelector('ul');
for(var i = 0; i < ul.childNodes.lenth; i++) {if(ul.childNodes[i].nodeType == 1) {//ul.childNodes[i] 是元素节点console.log(ul.childNodes[i]);}}

重点掌握

parentNodes.children(非标准)

parentNodes.children是一个只读属性,返回所有的子元素节点,它只返回子元素节点,其余节点不返回(重点掌握)

虽然children是一个非标准,但是已经得到了各个浏览器的支持,因此放心使用

parentNode.firstChild

firstChild返回第一个子节点,找不到就返回null,同样,也是包含所有的节点

parentNode.lastChild

lastChild返回最后一个子节点吗,找不到则返回null,同样,也是包含所有的节点

parentNode.firstElementChild

firstElementChild返回第一个子元素节点,找不到则返回null

parentNode.lastElementChild

lastElementChild返回最后一个子元素节点,找不到则返回null

注意:后面两个方法有兼容性问题,IE9以上才支持

// 1.firstChild 第一个子节点 不管是文本节点还是元素节点
console.log(ol.firstChild);
console.log(ol.lastChild);// 2.firstelementChild 返回第一个元素节点
console.log(ol.firstElementChild);
console.log(ol.lastElementChild);

实际开发的写法 既没有兼容性问题还能返回第一个子元素

console.log(ol.children[0]);
console.log(ol.children[ol.children.length-1]);

3.3 兄弟节点

所有节点

node.nextSibling

nextSibling返回当前元素的下一个兄弟节点,找不到则返回null,同样,也是包括所有节点

node.previousSibling

previousSiblin返回当前元素的上一个兄弟节点,找不到则返回null,同样,也是包括所有节点

特指元素节点

node.nextElementSibling

nextElementSibling返回当前元素下一个兄弟元素节点,找不到则返回null

node.previousElementSibling

previousElementSibling返回当前元素上一个兄弟节点找不到就返回null

注意:这两个方法有兼容性问题,IE9以上才支持

解决兼容性问题:自己封装一个兼容性函数

4. 创建节点

document.createElement(‘tagName’);

document.createElement()方法创建由tagName指定的HTML元素。因为这些元素原先不存在是根据我们的需求动态生成的,所有我们也称为动态创建元素节点

var li = document.createElement('li');

5. 添加节点

node.appendChild(child);

node.appendChild() 方法将一个节点添加到指定父节点的子节点列表末尾。类似于css里面的after伪元素

node.insertBefore(child,指定元素)

// 2.添加节点 node.appendChild(child)  node 父级  child子级
// 后面追加元素,类似数组中的push
var ul = document.querySelector('ul');
ul.appendChild(li);// 3.添加节点  node.insertBefore(child,指定元素);
var lili = document.createElement('li');
ul.insertBefore(lili,ul.children[0]);

6. 删除节点

node.removeChild(child)

node.removeChild() 方法从DOM中删除一个子节点,返回删除的节点``

// 1.获取元素
var ul = document.querySelector('ul');
// 2.删除元素  node.removeChild(child);
ul.removeChild(ul.children[0]);

**阻止链接跳转需要添加 javascript:void(0); 或者javascript:;
**

<a href="javascript:void(0);"></a>
<a href="javascript:;"></a>

7. 复制节点(克隆节点)

node.cloneNode()

node.cloneNode() 方法返回调用该方法的节点的一个副本。也称为克隆节点/拷贝节点

注意:

  • 如果括号参数为空或者为false,则是浅拷贝,即只是克隆复制节点本身,不克隆里面的子节点

  • 如果括号参数为true,则是深度拷贝,会复制节点本身以及里面所有的子节点

node.cloneNode(); //浅拷贝,不复制内容,只复制标签node.cloneNode(true); //深拷贝,复制内容、复制标签

8. 三种创建元素的区别

  • document.write()
  • element.innerHTML
  • document.createElement()

区别

document.write是直接将内容写在页面的内容流,但是文档流执行完毕,则它会导致页面全部重绘

例:

var btn = document.querySelector('button');btn.onclick = function() {document.write('<div>臭猪</div>');}

点击前:

点击后:


页面重写了!!

  • innerHTML是将内容写入某个DOM节点,不会导致页面全部重绘
  • innerHTML创建多个元素效率更高(不要拼接字符串,采取数组形式拼接),结构稍微复杂
  • createElement() 创建多个元素效率稍低一点点,但是结构更清晰

总结:不同浏览器,innerHTML效率要比creatElement高

例;

var inner = document.querySelector('.inner');
var arr = [];for(var i=0;i<=100;i++) {arr.push('<a href="#">百度</a>');}
inner.innerHTML = arr.join('');

DOM之节点操作总结(附实例、图解)相关推荐

  1. JavaScript——DOM之节点操作

    节点操作 前述: 一.节点的概述 二.节点操作 1.节点层级 2.案列-下拉菜单 3.兄弟节点 4.创建节点 5.删除节点 6.案列 :留言并且删除节点 7.复制节点 8.案例:动态生成表格 9.三种 ...

  2. 再谈三角形整理形态(附实例图解)

    对称三角形的定义.市场含义.各项要点.研判诀窍.案例分析.上升/下降三角形的基本概念.市场含义.要点提示.注意事项.形态举例.还有底部三角形.扩散三角形.研判要点.操作要点. 千帆竞发的网易博客 相关 ...

  3. 04-老马jQuery教程-DOM节点操作及位置和大小

    1. jQuery创建DOM标签 1.1 DOM动态创建标签的方法 DOM时代我们通过document的createElement方法动态创建标签.创建标签后,动态的给他添加属性.例如代码: // 动 ...

  4. DOM节点操作大全(一)

    下面是对DOM节点操作的整理,有创建节点.插入节点.删除节点.复制节点 希望可以帮助到有需要的小伙伴哦 在下一篇博客小编会整理DOM节点属性的知识点 文章目录 创建节点 插入节点 删除节点 复制节点 ...

  5. jQuery DOM 节点操作

    DOM 中有一个非常重要的功能,就是节点模型,也就是 DOM 中的"M".页面中的元 素结构就是通过这种节点模型来互相对应着的,我们只需要通过这些节点关系,可以创建. 插入.替换. ...

  6. DOM获取元素、事件基础、操作元素、节点操作

    什么是DOM? 文档对象模型,是W3C组织推荐的处理可扩展标记语言(HTML 或者XML)的标准编程接口. W3C已经定义了一系列的DOM接口,通过这些DOM接口可以改变网页的内容,结构和样式. DO ...

  7. DOM文档树和节点操作

    1 DOM文档树 1.1 DOM的定义(document object modle) DOM就是文档对象模型. /* 查看这段HTML代码中p的DOM模型 */ <html><hea ...

  8. html dom节点取父节点,JavaScript DOM父子兄节点操作必看详解

    首先我们知道网页中的所有内容都是节点(标签.属性.文本.注释等) ,之前我们已经说过了一些元素的获取方法 比如element.getElementById(),element.querySelecto ...

  9. WebAPI第一天学习总结—— DOM、获取元素、事件基础、操作元素、节点操作

    Web API介绍 API的概念 API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访 ...

  10. js的DOM节点操作:创建 ,插入,删除,复制,查找节点

    DOM含义:DOM是文档对象模型(Document Object Model,是基于浏览器编程的一套API接口,是W3C出台的推荐标准.其赋予了JS操作节点的能力.当网页被加载时,浏览器就会创建页面的 ...

最新文章

  1. 网络营销——网络营销浅析网站不发文还能维持稳定排名吗?
  2. CMD命令启动和关闭虚拟机VMware || Apache || svn
  3. Cracer渗透视频课程学习笔记——漏洞分析
  4. SQL Server2000 未公开的存储过程
  5. 13.2.7 中间件
  6. ORACLE SQL调优之执行计划与隐藏参数_complex_view_merging
  7. GPU Gems1 - 11 阴影贴图反走样
  8. 独占设备的分配与回收_灵魂拷问:Java对象的内存分配过程是如何保证线程安全的?...
  9. 工作93:注意数据对应接口位置
  10. 27日直播预告丨Oracle运营商行业生产实践分享
  11. ecshop 模板标签
  12. JAVA程序员必看的15本书
  13. oracledatabase11gr2怎么打开_oracle database 11gR2 + forms and reports 11g安装教程
  14. css3中的zoom属性以及jquery中css()方法操作元素的属性
  15. 盘点:近一年全球十大数据安全事件
  16. 汶川大地震引起最近全国人民心理一定程度的恐慌问题
  17. 生活感悟,人生正能量!--摘自张瑞敏演讲语录
  18. 华硕路由器修改 Hosts 以达到局域网内自定义解析
  19. 方便到令人发指的枚举工具类
  20. 如何使用BBP公式直接计算π的第n位

热门文章

  1. 【图像隐写】基于matlab GUI DWT+SVD数字水印 【含Matlab源码 939期】
  2. cocos creator 数组_5Cocos Creator 脚本简介
  3. python安装及运行环境_Python 安装及环境搭建
  4. python 获取excel文本框_python学习-excel读取
  5. json字符串和字典的区别
  6. 南昌计算机学校哪家最可靠,南昌问题孩子管教学校哪家靠谱
  7. Linux的dev目录被删除,详解Linux系统下的/dev目录
  8. codeblock无法新建工程_【工程前沿】专业专注凸显市政“制造” ——八公司太原南站东广场配套路网工程施工纪实...
  9. layedit 内容变化事件_React反应表单与事件
  10. excel方格子插件_转载 | 18个Word/Excel/PPT插件整理