理解DOM——《JavaScript高级程序设计》第10、11章笔记

DOM是HTML和XML文档提供的一系列API的集合。

DOM将HTML和XML文档描绘成一个由多层次节点构成的树结构,文档中所有的元素都是一个节点。

树结构的根节点(又称文档元素)有且只有一个。

HTML文档的根节点始终是<html>,XML文档则可以是任何元素。

一、使用nodeType检测节点类型

节点(node)一共有12种类型,每种类型用一个1~12之中的数字表示。


数字


表达式


说明


1


Node.ELEMENT_NODE


元素类型


2


Node.ATTRIBUTE_NODE


属性类型


3


Node.TEXT_NODE


文本类型


4


Node.CDATA_SECTION_NODE


XML文档的CDATA区域


5


Node.ENTITY_REFERENCE_NODE


6


Node.ENTITY_NODE


7


Node.PROCESSING_INSTRUCTION_NODE


8


Node.COMMENT_NODE


注释类型


9


Node.DOCUMENT_NODE


文档类型


10


Node.DUCUMENT_TYPE_NODE


文档属性类型


11


Node.DUCUMENT_FRAGMENT_NODE


文档片段类型


12


Node.NOTATION_NODE

操作节点前通常需要检测节点类型,原因是我们获取的子节点集合常常混合多类节点。

例如:

<ul>

<li></li>

<li></li>

<li></li>

</ul>

ul有七个子节点,包括三个<li>和四个空白文本节点(但在IE看来只有三个<li>)。

二、节点通用的属性及方法


节点信息


标签名


nodeName


或者tagName


属性值或文本


nodeValue


节点关系


父子关系


.childNodes


由直接子元素构成的动态的数组对象


.firstChild


相当于.childNodes[0]或.childNodes.item(0)


.lastChild


相当于.childNodes[node.childNodes.length-1]


.parentNode


父节点只有一个


同级关系


.nextSibling


.previousSibling


根元素


.ownerDocument


指向根节点(文档元素)


检测子节点


.hasChildNodes()


有,则返回true;无,则返回false


操作节点


添加子节点


.appendChild()


参数是待插入的子节点

如果传入已存在的子节点,则该子节点的位置会被调到子节点序列的末尾


.insertBefore()


两个参数,一是待插入的子节点,二是参照子节点。如果参照子节点是null,则插入到末尾


.replaceChild()


两个参数:待添加子节点和被替换子节点


删除子节点


.removeChild()


参数是待删除子节点


复制节点


.cloneNode()


参数为布尔值

true表示深复制,复制节点本身及其全部子节点;false表示浅复制,只复制节点本身

复制后的节点必须插入文档中


.normalize()


合并文本类型的子节点

三、文档的属性和方法(省略了一些不常用的、浏览器支持差异大的属性)

文档指整个html文档。它是window对象的一个属性。


document


.documentElement


得到html元素,和.childNodes[0]一样


.body


得到body元素


.title


返回或设置title内容


.URL


返回完整的url地址


.domain


返回域名


.anchors


返回所有带name特性的<a>元素


.links


返回所有带href热性的<a>元素


.forms


返回所有<form>元素


.images


返回所有<img>元素


.getElementById()


返回指定元素


.getElementByTagName()


返回指定元素


.getElementByName()


返回所有带name特性的元素


.write()


通常用于在文档加载过程中


.createElement()


参数为待创建的标签名


.createTextNode()


参数为文本节点字符串

四、元素的属性和方法


可直接访问与修改的属性,是元素的标准属性,自定义属性不可直接访问(IE除外)


.id


.className


……


.style


返回一个对象


.onclick(事件属性)


返回一个函数


属性的集合


attributes


返回包含所有特性的动态的数组


操作属性的方法


.getAttribute()


参数为特性的名称(字符串)


.setAttribute()


参数有两个:一、特性名;二、值


.removeAttribute()


参数为特性的名称

五、文本的属性和方法


访问、设置与修改文本


.nodeValue  .data


注:空白也是文本


文本的字符数


.length


操作文本的方法


.appendData(text)


.deleteData(offset,count)


从offset处开始删除count个字符


.insertData(offset,text)


在指定offset处插入指定文本


.replaceData(offset,count,text)


替换文本


.splitText(offset)


分割文本


.substringData(offset,count)


提取某段文本

六、DOM扩展

2008年以前,所有的DOM扩展都是浏览器专有的,后来W3C将其中一部分已然成为标准的扩展写入了规范中。主要有:选择符API、元素遍历和HTML5 DOM扩展。其余专有扩展此文按下不表。


选择符API


.querySelector()


参数为CSS选择符,返回匹配模式的第一个元素


.querySelectorAll()


参数同上,返回一个元素集合


.matchesSelector()


参数同上,用于检测。返回布尔值


元素遍历

不包括文本节点


.childElementCount


返回子元素个数


.firstElementChild


.lastElementChild


.previousElementSbling


.nextElementSbling


HTML5


.getElementsByClassName()


document的方法


.classList


.add(value)


.contains(value)


.remove(value)


toggle(value)


.readyState


document的属性。返回两个值loading、complete


.charset


document的属性。用于获取与修改字符集


.innerHTML


返回或设置子节点,(是所有子节点及后代)


.outerHTML


包含本身


.scrollIntoView()


滚动页面,让调用该方法的元素出现的视区

时间: 2024-08-27 01:18:08

理解DOM——《JavaScript高级程序设计》第10、11章笔记的相关文章

《Javascript高级程序设计》第六章笔记整理

一.创建对象的方法(6种) 1.工厂模式 即用函数来封装以特定接口创建对象的细节. function createPerson(name,age,job){ var o = new Object(); o.name = name; o.age = age; o.job = job; o.sayName = function(){ alert(this.name); } return o; } var person1 = createPerson('Lily',17,'Teacher'); var

javascript高级程序设计 第十四章--表单脚本

javascript高级程序设计 第十四章--表单脚本 在HTML中表单由<form>元素表示,在js中表单对应的是HTMLFormElement类型,这个类型也有很多属性和方法:取得表单元素的引用还是为它添加id特性,用DOM操作来获取表单元素:提交表单:把<input>或<button>元素的type特性设置为"submit",图像按钮把<input>元素的type特性设置为"image",也可以调用submit(

《JAVASCRIPT高级程序设计》第三章

<JAVASCRIPT高级程序设计>第三章主要讲述了这门语言的基础概念,内容多而浅,通过思维导图可以帮助我们很好的理清脉络. js函数使用function关键字来声明,以下是一个简单的例子: 1 function sayHi(name, message){ 2 alert("hello," +name + message); 3 } 函数中可以使用return语句指定返回值,如果只有“return;”,则函数在停止执行后,将返回undefined; 定义的函数有2个参数,那

《javascript高级程序设计》第六章总结

6.1 理解对象 属性类型 属性特性 行为描述 数据属性 Configurable 表示是否能通过delete删除属性从而重新定义属性. 数据属性 Enumerable 表示能否通过for-in循环返回属性.对于直接在对象中定义的属性,默认为true 数据属性 Writable 表示是否可以修改属性的值. 数据属性 value 表示这个属性的内部值. 访问器属性 Configurable 表示是否能通过delete删除属性从而重新定义属性. 访问器属性 Enumerable 表示能否通过for-

《javascript高级程序设计》第五章知识点总结

第五章知识点总结 1.object类型 访问对象的方法:①点表示法        (people.name) :      ②方括号表示法         (people[name]). 常用方法:hasOwnProperty()         用于检查给定属性在当前对象实例中是否存在 isPrototypeOf()              用于检测传入的对象是否传入对象原型 toString()                        返回对象的字符串表示 valueOf()    

《javascript高级程序设计》第十三章知识点

第十三章知识点总结 1.事件流: ①事件冒泡:事件开始时由最具体的事件接受,逐级向上传播到较为不具体的节点. ②事件捕获:不太具体的节点更早的接受事件,最具体的节点应该最后接到事件. 事件流包括三个阶段:事件捕获阶段.处于目标阶段.事件冒泡阶段. 2.事件处理程序 3.事件对象 IE 属性 除了上面的鼠标/事件属性,IE 浏览器还支持下面的属性: 属性 描述 cancelBubble 如果事件句柄想阻止事件传播到包容对象,必须把该属性设为 true. fromElement 对于 mouseov

《JavaScript高级程序设计》第10-11章

第十章 DOM 1.Node类型:12种数值常量——Node.ELEMENT_NODE(1), Node.ATTRIBUTE_NODE(2), Node.TEXT_NODE(3),Node.CDATA_SECTION_NODE(4),Node.ENTITY_REFERENCE_NODE(5),Node.ENTITY_NODE(6),Node.PROCESSING_INSTRUCTION_NODE(7),Node.COMMENT_NODE(8),Node.DOCUMENT_NODE(9),Node

《JavaScript高级程序设计》第六章【面向对象的程序设计】 包括对象、创建对象、继承

一.理解对象 ECMAScript中有两种属性:数据属性和访问器属性. 二.创建对象 1. 工厂模式 使用简单的函数创建对象,为对象添加属性和方法,然后返回对象.这种方法后来被构造函数模式所取代. 2. 构造函数模式 可以创建自定义引用类型,可以像创建内置对象实例一样使用new操作符.但是它的每个成员都无法得到复用,包括函数. 但是这样说好像也不准确——如果是通过一个指针指向构造函数外部的函数的话,应该算是复用? 1 function Person(name,age){ 2 this.name

《JAVASCRIPT高级程序设计》第五章(1)

引用类型是一种将数据和功能组合到一起的数据结构,它与类相似,但是是不同的概念:ECMAScript虽然是一门面向对象的语言,但它不具备传统的面向对象语言所支持的类和结构等基本结构.引用类型也被称为“对象定义”. 一.Object类型 创建实例方式: 1使用new操作符+构造函数 1 var person = new Object(); 2 person.name = "Lillian"; 3 person.age = 29; 2使用对象字面量表示法 2.1属性不加引号 1 var pe

JavaScript高级程序设计:第6章理解对象部分

懂得使用对象字面量的方式来创建对象:(属性之间用逗号相隔) 数据属性和访问器属性 数据属性有四个特性:Writable, Configurable, Enumerable, Value 访问器属性有四个特性:Configurable, Enumerable, Get, Set 方法:如何定义多个属性 方法:如何修改属性默认的特性