摘要:中的所有对象都是以对象的形式实现的。这意味着中的对象与原生对象的行为或活动特点并不一致。该属性指向表示整个文档的文档节点。同时由要插入的节点占据其位置。返回被移除的节点。操作类名操作类名时,需要通过属性添加删除和替换类名。
Note:IE中的所有DOM对象都是以COM对象的形式实现的。这意味着IE中的DOM对象与原生Javascript对象的行为或活动特点并不一致。
DOM1级主要定义了HTML和XML的文档的底层结构。DOM2和DOM3级分为几个模块。
DOM2级核心(DOM Level 2 Core):在1级核心基础上构建,为节点添加了更多方法和属性
DOM2级视图(DOM Level 2 Views):为文档定义了基于样式信息的不同视图
DOM2级事件(DOM Level 2 Events):说明了如何使用事件与DOM文档交互
DOM2级样式(DOM Level 2 Style):定义了如何以编程方式来访问和改变CSS样式信息
DOM2级遍历和范围(DOM Level 2 Tranversal and Range):引入了遍历DOM文档和选择其特定部分的新接口。
DOM2级HTML(DOM Level 2 HTML):在1级HTML基础上构建,添加了更多属性、方法和新街口。
// 判断是否支持模块 var DOM2Core = document.implementation.hasFeature("Core",2.0)DOM2级核心 Node
DOM1级定义了一个Node接口。该接口将由DOM中的所有节点类型实现。
Javascript中的所有节点类型都 继承自Node类型,因此所有节点类型都共享着相同的基本属性和方法。
兼容性:除IE外,其他所有浏览器都可以访问到这个类型
节点类型每个节点都有一个nodeType属性,用于表明节点的类型。
节点类型由在Node类型中定义的12个数值常量来表示,下面列出常用的几个。
Node.ELEMENT_NODE: 1
Node.TEXT_NODE: 3
Node.COMMENT_NODE: 8
节点信息可以通过nodeName和nodeValue来了解节点信息。这两个属性取决于节点的类型。
在使用这两个节点之前,最好先检测一下节点类型。
如果节点是一个元素,nodeName中保存的始终是元素的标签名,而nodeValue值始终为0。
节点关系每个节点都有一个childNodes属性,其中保存着一个NodeList对象。NodeList对象是一种类数组对象,用于保存一组有序的节点,可以通过位置来访问这些节点。
hasChildNodes():这个方法在节点包含一个或多个子节点的情况下返回true。
ownerDocument:该属性指向表示整个文档的文档节点。
// 将NodeList对象转换为数组 var arrayOfNodes = Array.prototype.slice.call(someNode.childNodes,0);
兼容性:IE8以及更早版本将NodeList实现为一个COM对象,因此上面的代码会导致错误。
Note:NdoeList对象的特殊之处在于,它实际上是基于DOM结构动态执行查询的结果,因此DOM的变化能直接反映在NodeList对象之中。它是有生命的对象,而不是在我们第一次访问它在某一个瞬间拍下的快照。
操作节点appendChild():用于向childNodes列表的末尾添加一个节点。返回新增的节点。
insertBefore():接收两个参数:要插入的节点和作为参照的节点。插入节点后,被插入的节点会变成参照节点的前一个同胞节点。同时被方法返回。
replaceChild():接收两个参数:要插入的节点和要替换的节点。要替换的节点将由这个方法返回并从文档树中移除。同时由要插入的节点占据其位置。
removeChild():接收一个参数,即要移除的节点。返回被移除的节点。
这四个方法都是操作的某个节点的子节点,也就是说,要使用这几个方法必须先取得父节点。另外并不是所有节点都有子节点,如果在不支持子节点的节点上,调用了这些方法,将会导致错误。
Note:
如果传入到appendChild()中的节点已经是文档的一部分,那结果就是将该节点从原来的位置转移到新位置。即可以将DOM树看成是由一系列指针连接起来的,但任何DOM节点也不能同时出现在文档中的多个位置上。
在使用replaceChild()插入一个节点时,该节点的关系指针都会从被它替换的节点复制过来。从技术上来讲,被替换的节点仍然还在文档中,但它在文档中已经没有了自己的位置。同样的,removeChild()移除的节点也同样为文档所有,只不过在文档中已经没有了自己的位置。
其他方法有两个方法是所有类型节点都要的。
cloneNode():用于创建调用这个方法的节点的一个完全相同的副本。接收一个布尔值参数,true:表示执行深复制,也就是复制节点以及整个子节点树。false:表示执行浅复制,即只复制节点本身。
Note:
deepList.childNodes.length中的差异主要是因为IE8以及更早版本与其他浏览器处理空白字符的方式不一样。IE9以及之前版本不会为空白符创建节点。
cloneNode()方法不会复制添加到DOM节点中的Javascript属性,例如事件处理程序等。这个方法只复制特性,在明确指定的情况下也复制子节点,其他一切都不会复制。IE在此存在一个bug,即它会复制事件处理程序,所以建议,在复制之前最好先移除事件处理程序。
normalize():处理文档树种的文本节点。
Document类型--nodeType=9Javascript通过Document类型表示文档。HTMLDocument继承自Document类型
1.document对象是HTMLDocument对象的实例
2.document对象是window对象的一个属性,可以将其作为全局对象进行访问。
document instanceof HTMLDocument //true HTMLDocument.__proto__ ==== Document //true
document作为我们操作文档的一个公共接口存在。
document信息document.URL:包含页面完整的URL
document.domain:包含页面的域名
document.referrer:保存着链接到当前页面的那个页面的URL
在这三个属性中只有domain是可以设置的。但由于安全方面的限制,也并非可以给domain设置任何值。
不能将这个属性设置为URL中不包含的域
如果域名一开始是松散的,那么不能将它设置为紧绷的。
// 假设页面来自p2p.wrox.com域 document.domain = "wrox.com"; // 松散的,成功 document.domain = "nczonline.ne4t" // 出错 document.domain = "p2p.wrox.com" // 紧绷的,出错
document.readyState:有两个可能的值(HTML5新增)
loading:正在加载文档
complete:已经加载完文档
document.compatMode:这个属性的作用是告诉开发人员浏览器采用了那些渲染模式(HTML5新增)
值等于"CSS1Compat",表明浏览器采用标准模式进行渲染
值等于"BackCompat",表明浏览器在混杂模式下进行渲染
document子节点document.documentElement:获得html元素的引用
document.body:获得body元素的引用
document.head:获得head元素的引用(HTML5新增)
document.title:包含title元素的中的文本
document.activeElement:这个属性始终会引用DOM中当前获得了焦点的元素(HTML5新增)
Browser compatibility-head
Browser compatibility-activeElement
Document类型为查元素提供了两种方法,1,2
HTMLDocument类型提供了方法,3
document.getElementById()
document.getElementsByName:这个方法会返回带有给定name特性的元素,最常用于取得单选按钮。同样也返回 HTMLCollection对象。
HTMLCollection对象,可以通过length属性访问元素长度,通过[]方括号语法访问对象中的项。方括号中既可以是数字也可以是字符串的索引值。
创建节点document.createElement():接收一个参数,即要创建元素的标签名。
document.createTextNode():接收一个参数,要插入节点中的文本。
这些集合都是HTMLCollection对象
document.anchors:包含文档中带name特性的>元素
document.forms:包含文档中所有的
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/78774.html
摘要:是文档的一种表示结构。这些任务大部分都是基于它。这个实践的重点是把你在前端练级攻略第部分中学到的一些东西和结合起来。一旦你进入框架部分,你将更好地理解并使用它们。到目前为止,你一直在使用进行操作。它是在前端系统像今天这样复杂之前编写的。 本文是 前端练级攻略 第二部分,第一部分请看下面: 前端练级攻略(第一部分) 在第二部分,我们将重点学习 JavaScript 作为一种独立的语言,如...
摘要:定义一个组件可以在其他组件中调用这个组件调用组件刘宇组件插入内容在上面的案例中可以看到吧写到当中,这种写法称为。 React初识 React是Facebook推出的一个javascript库(用来创建用户界面的Javascript库),所以他只是和用户的界面打交道,你可以把它看成MVC中的V(视图)这一层。 组件 React的一切都是基于组件的。web世界的构成是基于各种HTML标签的...
摘要:一般来说,声明式编程关注于发生了啥,而命令式则同时关注与咋发生的。声明式编程可以较好地解决这个问题,刚才提到的比较麻烦的元素选择这个动作可以交托给框架或者库区处理,这样就能让开发者专注于发生了啥,这里推荐一波与。 本文翻译自FreeCodeCamp的from-zero-to-front-end-hero-part。 继续译者的废话,这篇文章是前端攻略-从路人甲到英雄无敌的下半部分,在...
摘要:有级级级共个级别。事件类型事件类型鼠标事件键盘事件事件事件处理器执行代码的程序在事件发生时会对事件做出响应。在标签中使用事件处理器的语法是标签事件处理器代码事件处理程序事件就是用户或浏览器自身执行的某种动作。 DOM介绍 D(文档)可以理解为整个Web加载的网页文档,O(对象)可以理解为类似window对象只来的东西,可以调用属性和方法,这里我们说的是document对象,M(模型)可...
摘要:事件处理允许对事件做出反应。还可以用代码为多个元素分配相同的事件。指定事件监听器接下来看看怎样为元素分配事件监听器。 翻译:疯狂恶的技术宅https://medium.freecodecamp.o... 本文首发微信公众号:jingchengyideng欢迎关注,每天都给你推送新鲜的前端技术文章 Javascript DOM(文档对象模型)是一个允许开发人员操纵页面内容、结构和风...
阅读 2778·2023-04-26 01:47
阅读 3590·2023-04-25 23:45
阅读 2460·2021-10-13 09:39
阅读 605·2021-10-09 09:44
阅读 1788·2021-09-22 15:59
阅读 2761·2021-09-13 10:33
阅读 1706·2021-09-03 10:30
阅读 655·2019-08-30 15:53