学习笔记,仅供参考,有错必究


文章目录

  • 节点操作
    • 节点概述
    • 节点层级
      • 父节点
      • 子节点
      • 兄弟节点
    • 创建节点
    • 删除节点
    • 复制节点
    • 创建元素三种方式

节点操作

节点概述

网页中的所有内容都是节点(标签、属性、文本、注释等),在DOM 中,节点使用 node 来表示。

HTML DOM 树中的所有节点均可通过 JavaScript 进行访问,所有 HTML 元素(节点)均可被修改,也可以创建或删除。

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

节点类型 nodeType值
元素节点 1
属性节点 2
文本节点 3

我们在实际开发中,主要操作的是元素节点。

  • 举个例子

HTML:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><div class="test01">我是div</div><script>var test01 = document.querySelector(".test01")console.dir(test01);</script>
</body></html>

控制台的部分输出:

nodeName: "DIV"
nodeType: 1
nodeValue: null

节点层级

父节点

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

node.parentNode

parentNode属性可返回某节点的父节点,注意!是最近的一个父节点。;

如果指定的节点没有父节点,则返回null.

子节点

获取所有子节点:

parentNode.childNodes

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

注意,返回值里包含了所有节点,包括元素节点、文本节点等。

如果我们只想获取子元素节点,可以使用如下代码:

parentNode.children

parentNode.children是一个只读属性,返回该节点所有的子元素节点,它只返回子元素节点,其他节点不返回。

第一个子节点:

parentNode.firstChild

最后一个子节点:

parentNode.lastChild

第一个子元素节点(IE9以上):

parentNode.firstElementChild

最后一个子元素节点(IE9以上):

parentNode.lastElementChild

在实际开发中,firstChild 和 lastChild 包含其他节点,操作不方便,而 firstElementChild 和 lastElementChild 又有兼容性问题,那么我们如何获取第一个子元素节点或最后一个子元素节点呢?解决方案如下:

<ol><li>我是li1</li><li>我是li2</li><li>我是li3</li><li>我是li4</li><li>我是li5</li>
</ol>
<script>//实际开发的写法  既没有兼容性问题又返回第一个子元素console.log(ol.children[0]);console.log(ol.children[ol.children.length - 1]);
</script>

兄弟节点

返回当前元素的下一个兄弟节点:

node.nextSibling

返回当前元素的上一个兄弟节点:

node.previousSibling

返回当前元素的下一个元素节点:

node.nextElementSibling

返回当前元素的上一个元素节点:

node.previousElementSibling

创建节点

创建节点:

document.createElement("tagName")

将节点添加到指定父节点的子节点列表的末尾:

node.appendChild(child)

将节点添加到指定父节点的指定子节点的前面:

node.insertBefore(child, 指定节点)

删除节点

该方法从 node节点中删除一个子节点,返回删除的节点。

node.removeChild()
  • 举个例子
<button>删除</button>
<ul><li>我是1</li><li>我是2</li><li>我是3</li>
</ul>
<script>// 1.获取元素var ul = document.querySelector('ul');var btn = document.querySelector('button');// 2. 点击按钮依次删除里面的孩子btn.onclick = function() {if (ul.children.length == 0) {this.disabled = true;} else {ul.removeChild(ul.children[0]);}}
</script>

复制节点

该方法返回一个节点的副本:

node.cloneNode()

注意,括号中,若填写的参数为false则为浅拷贝,只复制节点本身,不克隆里面的子节点;若为true则为深拷贝,则复制节点本身及节点内的所有子节点。

  • 举个例子
<ul><li>1111</li><li>2</li><li>3</li>
</ul>
<script>var ul = document.querySelector('ul');// 1. node.cloneNode(); 括号为空或者里面是false 浅拷贝 只复制标签不复制里面的内容// 2. node.cloneNode(true); 括号为true 深拷贝 复制标签复制里面的内容var lili = ul.children[0].cloneNode(true);ul.appendChild(lili);
</script>

创建元素三种方式

document.write()
element.innerHTML
document.createElement()
  • 举个例子
<script>// 三种创建元素方式区别 // 1. document.write() 创建元素  如果页面文档流加载完毕,再调用这句话会导致页面重绘var btn = document.querySelector('button');btn.onclick = function() {document.write('<div>123</div>');}// 2. innerHTML 创建元素var inner = document.querySelector('.inner');for (var i = 0; i <= 100; i++) {inner.innerHTML += '<a href="#">百度</a>'}var arr = [];for (var i = 0; i <= 100; i++) {arr.push('<a href="#">百度</a>');}inner.innerHTML = arr.join('');// 3. document.createElement() 创建元素var create = document.querySelector('.create');for (var i = 0; i <= 100; i++) {var a = document.createElement('a');create.appendChild(a);}
</script>

WebAPI(part8)--节点操作相关推荐

  1. 13前端学习之WebAPI(三):节点操作、事件高级、DOM事件流、事件委托冒泡

    文章目录 一.节点操作: 1. 删除节点: 1.2. 案例:删除留言 2. 赋值(克隆)节点: 3. 案例:动态生成表格: 3.1 案例分析: 3.2 实现: 4. 创建元素的三种方式: 4.1 区别 ...

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

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

  3. 双链表(插入节点操作)

    在双链表L中第i个位置插入值域为e的结点. 双链表的存储结构定义: typedef struct DLinkList{int data;DLinkList * prior;DLinkList * ne ...

  4. 18DOM之节点操作

    技术交流QQ群:1027579432,欢迎你的加入! 1.为什么学习节点操作 获取元素通常使用两种方式: (1).利用DOM提供的方法获取元素 document.getElementById() do ...

  5. 事件冒泡、事件委托、jQuery元素节点操作、滚轮事件与函数节流

    一.事件冒泡定义 事件冒泡是指在一个对象触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那 ...

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

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

  7. jquery元素节点操作

    jquery元素节点操作 创建节点 var $div = $('<div>'); var $div2 = $('<div>这是一个div元素</div>'); 插入 ...

  8. ztree 指定节点清空_节点操作

    一.节点操作 ​ 1.DOM节点操作 ​ ①创建节点 ​ 语法:document.createElement("标签名"): ​ 注:只单纯的创建出来了一个元素节点对象,不包含内容 ...

  9. jQuery DOM 节点操作

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

最新文章

  1. Android之ListView异步加载网络图片(优化缓存机制)
  2. 新疆计算机一级考试试题视作题,2014新疆计算机一级考试试题汇总
  3. Java big file debug - random access
  4. [Spring5]IOC容器_Bean管理注解方式_创建对象
  5. 十四、PHP框架Laravel学习笔记——构造器的排序分组、子查询
  6. 取得程序运行的目录[360度]
  7. 关于Patter类和Match类
  8. web文件上传(二)--使用form还是ajax
  9. 一分钟教你在博客园中制作自己的动态云球形标签页
  10. keil5安装教程及下载
  11. 百度离线地图——瓦片地图下载
  12. arduino超声波测距接线图详细_Arduino学习笔记A2 - Arduino连接超声波传感器测距
  13. 个人申请阿里云ICP备案流程
  14. 53Java模拟器,515最好的java模拟器
  15. 解决Server2008下远程桌面连接“由于没有终端服务器许可证服务器可以提供许可证”
  16. 最新版gg服务器框架安装器,GG服务框架安装器
  17. 【备忘】总结一些Java学习者经常去的网站及论坛
  18. it职业生涯_如何通过这些有用的网站提升您的自由职业生涯
  19. 时下最热门的五款微信编辑器使用评测
  20. 如何使用 LK 字幕脚本工具

热门文章

  1. 07_QueueWithTwoStacks
  2. keras:Sequential API 和 Function API
  3. window安装python3后怎么用pyspark_window10搭建pyspark(超级详细)
  4. 机器学习(三十七)——Integrating Learning and Planning(3)
  5. 图像处理理论(四)——HOG, Haar, ISP
  6. 设置oracle 随机启动,配置Oracle单实例随机启动(11gR2)
  7. RedHat虚拟机安装VMware Tools
  8. android开发常用的颜色值
  9. 深度学习(三)转-可视化理解卷积神经网络 直接查看卷积神经网络的过程特征...
  10. python-websocket-server hacking