第十章 DOM

本文详细介绍了DOM(文档对象模型)的概念及其在HTML和XML文档中的应用。包括DOM的节点层次结构、Node类型及其属性方法、如何使用JavaScript操作DOM节点,以及Document、Element和Text类型的特性和用途。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

DOM

DOM(文档对象模型):针对HTML和XML文档的一个API(应用程序编程接口)。DOM描绘了一个层次化的节点树,允许开发人员添加,移除和修改页面的某一部分。

节点层次

节点:节点分为几种不同的类型,每种类型分别表示文档中不同的信息及标记。每个节点都拥有各自的特短吧,数据,方法。

文档元素:文档元素是文档最外层的元素,文档中的其他所有元素都被包裹在文档元素中。在HTML中,文档元素始终是<html>元素。

 

HTML元素:元素节点。

特性: 特性节点。

文档类型:文档类型节点。

注释: 注释节点。

 

Node类型

JS中的所有类型节点都继承自Node类型,所有节点类型共享相同的基本属性和方法。

nodeName:  对于元素节点,nodeName中保存的都是元素的标签名,nodeValue的值始终为null.

nodeValue:  元素的值。

childNodes: 保存着一个nodeList对象。nodeList是一种类数组对象,用于保存一组有序的节点,可以通过位置来访问这些节点。有length属性。

基于DOM结构动态执行查询的结果,DOM结构的变化能够自动反映在NodeList对象中。

parentNode:指向childnode的父节点。

previousSibling: 节点的前一个同胞节点。

nextSibling: 节点的下一个同胞节点。

 

操作节点

插入节点

appendChild(): 向childNodes列表末尾添加一个节点。

insertBefore(): 接受俩个参数:要插入的节点, 参照的节点。被插入的节点变成参照节点的前一个同胞节点。

 

删除节点

replaceChild(): 接受俩个参数: 要插入的节点, 要替换的节点。

removeChild(): 接受一个参数: 移除的节点。

 

cloneNode():  复制一个调用这个方法的节点的一个副本。接受一个布尔值参数:表示是否执行深复制。true时,复制整个子节点树(只复制特性。子节点)。false时,只复制本身。

normalize(): 处理文档树种的文本节点。找到空文本阶段就按删除它。找到相邻的文本节点,将他们合并成为一个文本节点。

 

Document类型

document对象是HTMLDocumen(继承自Document)的一个实例.表示整个HTML页面。document对象是window对象的一个属性。

文档的子节点

documentElement: 始终指向HTML页面中的<HTML>元素。

 

文档信息:

document.title: 包含<title>元素中的文本。

URL: 包含页面完成的URL(地址栏中显示的URL)。

domain:  包含页面的域名

referrer: 保存着链接到当前页面的那个页面的URL。

var url = document.url;
//取得 完整的URL

var domain = document.domain;
//取得域名

var referrer = document.refeffer;
//取得来源页面的URL

 

Element类型

nodetype: 1;

nodeName: 元素的标签名;

nodeValue: null。

parentNode: 可能是document或Element;

element类型 提供对元素标签名,子节点及特性的访问。

html元素由HTMLElement类型表示,不是直接通过这个类型,也是通过它的子类型来表示。

操作特性的DOM方法有三个:

取得特性:getAttribute(), 特性的名称不区分大小写。

设置特性:setAttribute(),  接受2个参数: 要设置的特性名,值。如果特性已存在,会已指定的值替换现有的值。即可以操作HTML特性,也可以操作自定义特性。

移除特性:removeAttribute();

 

Text类型

nodetype: 3;

nodeName: #text;

nodeValue: 节点所包含的文本。

parentNode: 是一个Element;

不支持子节点。

length属性: 保存字符串的数目。

 

文本方法:

normalize:  合并文本节点,如果在一个包含2个或多个文本节点的父元素上调用,将所有文本节点成一个节点。

var element = document.createElement("div");
element.className = "message";
var textNode = document.createTextNode("Hello World!");
element.appendChild(textNode);

var anotherNode = document.createTextNode("Yippee!");
element.appendChild(anotherNode);
document.body.appendChild(element);
console.log(element.childNodes.length);
// 2  

element.normalize();
console.log(element.childNodes.length);
// 1

 

splitText(): 分割文本节点,将一个文本节点分为俩个,按照指定位置分割。 nodeValue值。原来的文本节点将包含从开始到指定位置之前的内容,新文本节点包含剩下的文本。这个方法会返回一个新文本节点。

var newNode = element.firstChild.splitText(5);
console.log(element.firstChild.nodeValue);
 console.log(newNode);
 // Hello
 // " World!Yippee!"

 

 

 

转载于:https://www.cnblogs.com/zhangbaihua/p/5598321.html

内容概要:本文档主要展示了C语言中关于字符串处理、指针操作以及动态内存分配的相关代码示例。首先介绍了如何实现键值对(“key=value”)字符串的解析,包括去除多余空格和根据键获取对应值的功能,并提供了相应的测试用例。接着演示了从给定字符串中分离出奇偶位置字符的方法,并将结果分别存储到两个不同的缓冲区中。此外,还探讨了常量(const)修饰符在变量和指针中的应用规则,解释了不同类型指针的区别及其使用场景。最后,详细讲解了如何动态分配二维字符数组,并实现了对这类数组的排序与释放操作。 适合人群:具有C语言基础的程序员或计算机科学相关专业的学生,尤其是那些希望深入理解字符串处理、指针操作以及动态内存管理机制的学习者。 使用场景及目标:①掌握如何高效地解析键值对字符串并去除其中的空白字符;②学会编写能够正确处理奇偶索引字符的函数;③理解const修饰符的作用范围及其对程序逻辑的影响;④熟悉动态分配二维字符数组的技术,并能对其进行有效的排序和清理。 阅读建议:由于本资源涉及较多底层概念和技术细节,建议读者先复习C语言基础知识,特别是指针和内存管理部分。在学习过程中,可以尝试动手编写类似的代码片段,以便更好地理解和掌握文中所介绍的各种技巧。同时,注意观察代码注释,它们对于理解复杂逻辑非常有帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值