以下为个人认为有必要记录的笔记 不喜勿喷
HTML DOM介绍
- 是HTML Document Object Model(文档对象模型)。
- 定义了访问和操作HTML文档的标准方法。
- 把 HTML 文档呈现为带有元素、属性和文本的树结构(节点树)。
- 以树结构表达 HTML 文档。
- DOM 处理中的常见错误是希望元素节点包含文本
HTML DOM的优缺点
- 优点:
易用性强,使用DOM时,将把所有的XML文档信息都存于内存中,并且遍历简单,支持XPath,增强了易用性。 - 缺点:
效率低,解析速度慢,内存占用量过高,对于大文件来说几乎不可能使用。另外效率低还表现在大量的消耗时间,因为使用DOM进行解析时,将为文档的每个element、attribute、processing-instrUCtion和comment都创建一个对象,这样在DOM机制中所运用的大量对象的创建和销毁无疑会影响其效率。
HTML DOM节点
- 整个文档是一个文档节点。
- 每个 HTML 元素是元素节点。
- HTML 元素内的文本是文本节点。
- 每个 HTML 属性是属性节点。
- 注释是注释节点。
HTML DOM方法
所有 HTML 元素被定义为对象,而编程接口则是对象方法和对象属性。
一些常用的 HTML DOM 方法
getElementById(id)
返回带有指定 ID 的元素。
getElementsByTagName()
返回包含带有指定标签名称的所有元素的节点列表(集合/节点数组)。
- 节点列表是一个节点数组。
getElementsByClassName()
返回包含带有指定类名的所有元素的节点列表。
- 在 Internet Explorer 5,6,7,8 中无效。
appendChild(node)
插入新的子节点(元素)。
- 首先必须创建该元素,然后把它追加到已有的元素上。
- 将新元素作为父元素的最后一个子元素进行添加。
removeChild(node)
删除子节点(元素)。
- 必须清楚该元素的父元素。
- 父元素.removeChild(子元素)。
- 找到需要删除的子元素,然后使用 parentNode 属性来查找其父元素child.parentNode.removeChild(child);
replaceChild()
替换子节点。
insertBefore()
在指定的子节点前面插入新的子节点。
- 首先必须创建该元素,然后用InsertBefore(新元素,已有元素)插入已有元素前。
createAttribute()
创建属性节点。
createElement()
创建元素节点。
createTextNode()
创建文本节点。
getAttribute()
返回指定的属性值。
setAttribute()
把指定属性设置或修改为指定的值。
一些常用的 HTML DOM 属性
innerHTML
节点(元素)的文本值。
- 对于获取或替换 HTML 元素的内容很有用。
- 可用于获取或改变任意 HTML 元素,包括 <html> 和 <body>。
parentNode
节点(元素)的父节点。
childNodes
节点(元素)的子节点。
attributes
节点(元素)的属性节点。
nodeName
规定节点的名称。
- nodeName 是只读的。
- 元素节点的 nodeName 与标签名相同。
- 属性节点的 nodeName 与属性名相同。
- 文本节点的 nodeName 始终是 #text。
- 文档节点的 nodeName 始终是 #document。
- 注意事项: nodeName 始终包含 HTML 元素的大写字母标签名。
nodeValue
规定节点的值。
- 元素节点的 nodeValue 是 undefined 或 null。
- 文本节点的 nodeValue 是文本本身。
- 属性节点的 nodeValue 是属性值。
nodeType
返回节点的类型。
- nodeType 是只读的。
HTML DOM事件
(内容具体查看相关教程吧,那里会更详细)
HTML DOM导航
能够使用三个节点属性:parentNode、firstChild 以及 lastChild ,在文档结构中进行导航。
firstChild
首个子元素。
lastChild
最后一个子元素。
parentNode
寻找该元素的父元素。
childNodes
寻找该节点的子节点们。
- 得到的是一个节点数组。
DOM根节点
document.documentElement
全部文档。
document.body
文档的主体。
写在后面
这篇笔记做得显然有点草率,大部分的内容没有记录,很多的对象、属性、方法都在HTML DOM的参考手册里,在日后的实践中会慢慢运用并记录相关的。
若是发现有错误欢迎大噶纠正!我也会及时弄清改正的!希望没有误导到可爱的你?。
下一步就向JQuery粗发啦,一起加油鸭~