010——DOM

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

10.1 节点层次

DOM可以将任何HTML、XML文档描绘成一个多层节点构成的结构。
每个节点拥有各自的特点、数据和方法,另外也与其他节点存在某种关系。
节点之间的关系构成了层次,而所有页面的标记则表现为一个以特点节点为根节点的树形结构。

文档节点是文档的根节点。

<html>
    <head>
        <title>Sample Page</title>
    </head>
    <body>
        <p>Hello World!</p>
    </body>
</html>

上述例子,文档节点只有一个子节点,即元素,称为文档元素。

  • 文档元素是文档的最外层元素,文档中的其他所有元素都包含在文档元素中。
  • 每个文档只能有一个文档元素。
  • HTML页面中,文档元素始终都是元素。
  • XML中,没有预定义的元素,因此任何元素都能成为文档元素。

每段标记都可以通过树中的一个节点表示:

  • HTML元素通过元素节点表示
  • 特性通过特性节点表示
  • 文档类型通过类型节点表示
  • 注释通过注释节点表示
10.1.1 Node类型

除IE之外,所有浏览器都可以访问到Node类型。
JavaScript所有节点类型都继承自Node类型,因此所有节点类型都共享相同的基本属性和方法。
每个节点都有NodeType属性,用于表名节点的类型,以下12个数值常量表示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YG2QQhvY-1615212206891)(evernotecid://41E469EA-0EFB-49ED-9229-E2CD30653BA7/appyinxiangcom/7805470/ENResource/p113)]@w=240
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QNmhBzjz-1615212206894)(evernotecid://41E469EA-0EFB-49ED-9229-E2CD30653BA7/appyinxiangcom/7805470/ENResource/p114)]@w=240

1、nodeName和NodeValue属性

if(someNode.nodeType == 1){
    value = sonmeNode.nodeName; // nodeName的值是元素的标签名称
}

2、节点关系
childNode保存着NodeList【基于DOM结构的动态执行查询结果】
访问NodeList中的节点,NodeList.item(index)
parentNode

3、节点操作

someNode.appendChild(newNode)    // 后插
someNode.insertBefore(newNode)   // 前插
someNode.replaceChild(newNode)   // 替换
someNode.removeChild(someNode.firstChild)  // 直接移除也可填someNode.lastChild

4、其他方法

cloneNode(true)
normalize() // 处理文本节点,是否包含文本,或者连续出现两个文本,空文本则删除,梁旭两个文本则合并
10.1.2 Document类型

getElementById/getElementByTagName
document.write/document.writeln

10.1.3 Element类型

getAttribute/setAttribute/removeAttribute
document.createElement()

10.1.4 Text类型

document.createTextNode()
规范化文本节点normalize()

document.createElement('div');
element.className = 'message';

var textNode = document.createTextNode('Hello world!');
element.appendChild(textNode);

var anotherTextNode = document.createTextNode('Yippee!');
element.appendChild(anotherTextNode);

document.body.appendChild(element);

alert(element.childNodes.length); // 2
element.normalize();

alert(element.childNodes.length); // 1
alert(element.childNodes.nodeValue); // "Hello world! Yippee!"

分割文本:splitText()

10.1.5 Comment类型

注释节点

document.createComment("A comment ");
10.1.6 CDATASection类型
<div id="myDiv"><![CDATA[This is some content.]]></div>

js方法:

document.createCDataSection()
10.1.7 DocumentType类型

DocumentType对象的3个属性:name、entities和notations。

  • name表示文档类型的名称
  • entities是由文档类型描述的实体的NamedNodeMap对象;
  • notations是由文档类型描述的符号的NamedNodeMap对象。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
DocumentType 的 name 属性中保存的就是"HTML":
alert(document.doctype.name); //"HTML"
10.1.8 DocumentFragment类型

DOM 规定文档片段 (document fragment)是一种“轻量级”的文档,可以包含和控制节点,但不会像完整的文档那样占用额外的资源

var fragment = document.createDocumentFragment();
10.2 DOM操作技术
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.m或d论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 、1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值