HTML节点操作
时间:2022-07-24
本文章向大家介绍HTML节点操作,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
HTML节点操作
HTML
节点的基本操作,添加节点,替换节点,删除节点,绑定事件,访问子节点,访问父节点,访问兄弟节点。
文档对象模型Document Object Model
,简称DOM
,是W3C
组织推荐的处理可扩展标记语言XML
的标准编程接口,是一种与平台和语言无关的应用程序接口API
。
根据W3C
的HTML DOM
标准,HTML
文档中的所有内容都是节点:整个文档是一个文档节点,每个HTML
元素是元素节点,HTML
元素内的文本是文本节点,每个HTML
属性是属性节点,注释是注释节点。HTML DOM
将HTML
文档视作树结构。这种结构被称为节点树:HTML DOM Tree
实例。
添加节点
<div id="t1"></div>
<script type="text/javascript">
var d1 = document.createElement("div"); // 创建一个节点
d1.style.color = "blue"; // 设置一下颜色
d1.setAttribute("id","d1"); // 设置一个属性
d1.innerText="innerText"; // innerText会一次性替换所有内容
var tn1=document.createTextNode(" CreateTextNode"); // createTextNode可以做动态添加
d1.appendChild(tn1); // 追加文本节点
var node = document.getElementById("t1").appendChild(d1); // 将d1节点追加到t1节点后
var b1 = document.createElement("div");
b1.innerText="添加到d1前";
document.getElementById("t1").insertBefore(b1,document.getElementById("d1")); // 将b1节点添加到t1节点内的d1节点前
</script>
替换节点
<div id="t2">
<div>被替换的节点</div>
</div>
<script type="text/javascript">
var d2 = document.createElement("div");
d2.style.color = "green";
d2.innerText="被我替换了";
document.getElementById("t2").replaceChild(d2,document.querySelector("#t2 > div:first-child")); // 第一个参数是要替换的节点,第二个参数是被替换的节点
</script>
删除节点
<div id="t3">
<div>下边的兄弟被删除了</div>
<div>我要被删除了</div>
</div>
<script type="text/javascript">
document.getElementById("t3").removeChild(document.querySelector("#t3 > div:nth-child(2)"));
</script>
绑定事件
<div id="t4" style="color: red;">点我</div>
<script type="text/javascript">
document.getElementById("t4").addEventListener('click',(e) => {
alert("点击事件");
})
</script
<!-- 事件流模型见 https://github.com/WindrunnerMax/EveryDay/blob/master/JavaScript/JS%E4%BA%8B%E4%BB%B6%E6%B5%81%E6%A8%A1%E5%9E%8B.md#dom0%E7%BA%A7%E6%A8%A1%E5%9E%8B -->
访问子节点
<div id="t5" style="color: grey;">
<div>1</div>
<div>2</div>
</div>
<script type="text/javascript">
console.log(document.getElementById("t5").childNodes); // 获取所有子节点 // 注意每个换行也会有一个#text文本节点
console.log(document.getElementById("t5").childElementCount); // 获取子节点数量
console.log( document.getElementById("t5").firstChild); // 获取第一个子节点,注意也会匹配#text
console.log(document.getElementById("t5").firstElementChild); // 获取第一个子节点
console.log(document.getElementById("t5").lastChild); // 获取最后一个子节点,注意也会匹配#text
console.log(document.getElementById("t5").lastElementChild); // 获取最后一个子节点
</script>
访问父节点
<div style="color: yellow;">
<div id="t6">1</div>
</div>
<script type="text/javascript">
console.log(document.getElementById("t6").parentNode);
</script>
访问兄弟节点
<div style="color: brown;"><div>1</div><div id="t7">2</div><div>3</div></div>
<script type="text/javascript">
console.log(document.getElementById("t7").previousSibling); // 注意也会匹配#text
console.log(document.getElementById("t7").previousElementSibling); // 不匹配文本节点、注释节点
console.log(document.getElementById("t7").nextSibling); // 注意也会匹配#text
console.log(document.getElementById("t7").nextElementSibling); // 不匹配文本节点、注释节点
</script>
代码示例
<!DOCTYPE html>
<html>
<head>
<title>HTML节点操作</title>
<meta charset="utf-8">
</head>
<body>
<div id="t1"></div>
<script type="text/javascript">
var d1 = document.createElement("div"); // 创建一个节点
d1.style.color = "blue"; // 设置一下颜色
d1.setAttribute("id","d1"); // 设置一个属性
d1.innerText="innerText"; // innerText会一次性替换所有内容
var tn1=document.createTextNode(" CreateTextNode"); // createTextNode可以做动态添加
d1.appendChild(tn1); // 追加文本节点
var node = document.getElementById("t1").appendChild(d1); // 将d1节点追加到t1节点后
var b1 = document.createElement("div");
b1.innerText="添加到d1前";
document.getElementById("t1").insertBefore(b1,document.getElementById("d1")); // 将b1节点添加到t1节点内的d1节点前
</script>
<div id="t2">
<div>被替换的节点</div>
</div>
<script type="text/javascript">
var d2 = document.createElement("div");
d2.style.color = "green";
d2.innerText="被我替换了";
document.getElementById("t2").replaceChild(d2,document.querySelector("#t2 > div:first-child")); // 第一个参数是要替换的节点,第二个参数是被替换的节点
</script>
<div id="t3">
<div>下边的兄弟被删除了</div>
<div>我要被删除了</div>
</div>
<script type="text/javascript">
document.getElementById("t3").removeChild(document.querySelector("#t3 > div:nth-child(2)"));
</script>
<div id="t4" style="color: red;">点我</div>
<script type="text/javascript">
document.getElementById("t4").addEventListener('click',(e) => {
alert("点击事件");
})
</script>
<!-- 事件流模型见 https://github.com/WindrunnerMax/EveryDay/blob/master/JavaScript/JS%E4%BA%8B%E4%BB%B6%E6%B5%81%E6%A8%A1%E5%9E%8B.md#dom0%E7%BA%A7%E6%A8%A1%E5%9E%8B -->
<div id="t5" style="color: grey;">
<div>1</div>
<div>2</div>
</div>
<script type="text/javascript">
console.log(document.getElementById("t5").childNodes); // 获取所有子节点 // 注意每个换行也会有一个#text文本节点
console.log(document.getElementById("t5").childElementCount); // 获取子节点数量
console.log( document.getElementById("t5").firstChild); // 获取第一个子节点,注意也会匹配#text
console.log(document.getElementById("t5").firstElementChild); // 获取第一个子节点
console.log(document.getElementById("t5").lastChild); // 获取最后一个子节点,注意也会匹配#text
console.log(document.getElementById("t5").lastElementChild); // 获取最后一个子节点
</script>
<div style="color: yellow;">
<div id="t6">1</div>
</div>
<script type="text/javascript">
console.log(document.getElementById("t6").parentNode);
</script>
<div style="color: brown;"><div>1</div><div id="t7">2</div><div>3</div></div>
<script type="text/javascript">
console.log(document.getElementById("t7").previousSibling); // 注意也会匹配#text
console.log(document.getElementById("t7").previousElementSibling); // 不匹配文本节点、注释节点
console.log(document.getElementById("t7").nextSibling); // 注意也会匹配#text
console.log(document.getElementById("t7").nextElementSibling); // 不匹配文本节点、注释节点
</script>
</body>
</html>
- 前端魔法堂——异常不仅仅是try/catch
- (cljs/run-at (JSVM. :all) "一起实现柯里化")
- (cljs/run-at (JSVM. :browser) "简单类型可不简单啊~")
- 前端魔法堂:解秘FOUC
- JS魔法堂:深究JS异步编程模型
- 前端魔法堂:屏蔽Backspace导致页面回退
- “表情包”火爆全球,域名emojis.com小六位易主
- 前端魔法堂:onsubmit和submit事件处理函数怎么不生效呢?
- (cljs/run-at (JSVM. :all) "Metadata就这样哦")
- (cljs/run-at (JSVM. :all) "细说函数")
- 动手写个数字输入框2:起手式——拦截非法字符
- Linux安装DNSmasq搭建自己的公共DNS
- (cljs/run-at (JSVM. :all) "一次说白DataType、Record和Protocol")
- 虚拟主机多域名转向
- HTML 教程
- HTML 简介
- html div 标签介绍
- html span 标签介绍
- html a 超链接标签
- HTML Br换行标签介绍
- HTML P段落标签介绍
- HTML br与p标签区别
- Html H 标题标签
- html px em pt长度单位
- HTML form 标签
- HTML radio 单选框
- HTML B 加粗标签
- HTML strong加粗粗体标签
- HTML em 强调标签
- HTML i 斜体标签
- HTML u下划线标签
- HTML s 删除线标签
- Html img 图片标签
- Html上标注sup与下标注sub标签
- HTML nobr 禁止换行标签
- HTML hr 水平线标签
- HTML label 标签
- HTML input 标签
- HTML textarea 标签
- HTML select下拉列表标签
- HTML checkbox 多选框
- HTML font color 标签
- HTML iframe 框架标签
- HTML Table 表格
- HTML dl dt dd 标签
- HTML ol li有序列表标签
- HTML ul li 无序列表标签
- HTML 注释
- CSS 教程
- CSS 简介
- CSS 语法
- CSS Id 和 Class选择器
- CSS 样式的创建
- CSS background 背景介绍
- CSS 文本样式
- CSS font 字体
- CSS A 链接
- CSS ul ol列表样式
- CSS TABLE 样式
- CSS 框模型
- CSS border 边框
- CSS Outlines 轮廓
- CSS 外边距 Margin
- CSS Padding 内边距
- CSS 分组和嵌套选择器
- CSS 尺寸 (Dimension)
- CSS Display 属性
- CSS Position 定位
- CSS Float 浮动
- CSS 水平对齐(Horizontal Align)
- CSS 组合选择符
- CSS 伪类
- CSS 伪元素
- CSS 导航栏
- CSS 下拉菜单
- CSS 图片廊
- CSS 图像透明/不透明
- CSS sprite 图像拼合技术
- CSS 媒体类型
- CSS 属性选择器
- CSS 实例
- 线上千万级大表排序该如何优化?
- LeetCode-7.整数反转 取模反转法与字符串法
- Spring Bean依赖
- Spring事务是如何应用到你的业务场景中的?
- MySQL8.0大表秒加字段,是真的吗?
- 大数据简介,技术体系分类整理
- 图像处理笔记(5)---- OpenCV 用滑动条做调色板
- 牛X | 一款比传统数据库快100-1000倍的数据库,认识一下
- SpringBoot统一参数校验
- SpringBoot多邮件源发送邮件
- 一个基础的SpringBoot项目该包含哪些
- leetcode树之平衡二叉树
- 3分钟短文:说说Laravel页面会话之间的数据保存Session用法
- Skywalking Php注册不上问题排查
- 第4章代码-图形几何变换