DOM是什么
- “D”指的是文档 即
document
,没有 document DOM也就无从谈起 你编辑的网页文档会被WEB浏览器转换为文档对象,document
是DOM操作的基础 - “O”是指的JavaScript语言里面的对象,即
Object
。在JavaScript里存在三种对象类型- 用户定义的对象
- 内建对象
- 宿主对象
- “M”代表着模型,即
Model
。在DOM里面把一份文档当做一个谱系根壮形结构。家族成员分为父级,子级,还有兄弟结构.
document
document是操作HTML的入口(对象)
document是HTMLDocument(是类型->构造函数)构建出来的及为HTMLDocument的子集
getElementsByName
- IE8以及之前版本不支持getElementsByClassName
- getElementsByName 通过name 属性获取元素
- getElementsByTagName 通过标签获取元素返回带有指定标签名的对象的集合。
querySelector
- querySelector(selector): 返回第一个选择器匹配的 HTML 页面元素。
- querySelectorAll(selector): 返回全部选择器匹配的 HTML 页面元素。
NodeList
- 动态 NodeList
*通过 getElementsByName()、getElementsByTagName() 和 getElementsByClassName() 方法获取的 NodeList 就是动态的 NodeList。 - 静态 NodeList
- 通过 querySelectorAll() 方法获取的 NodeList 就是静态的 NodeList。
节点操作
- document.createElement(标签名)创建元素节点
- document.createTextNode(文本内容)创建文本节点
- document.createAttribute(属性名称)创建属性节点
x.appendChild(errortext)
为X创建子节点
|
|
Document 的属性和方法保存在原型上
parentNode, parentElement
parentNode是W3C标准的parentElement 只在IE中可用.
Node方法节点元素的最上层为 Document
标签元素的最上层为HTML HTML的父级标签元素不存在 为null
nodetype 加点类型
DOM事件会产生变量获取的问题
事件的响应机制是实时的而变量在事件发生后并没有变化。
IE8之前版本不错在空白节点的问题
insertAfter()是JQ里面的方法而不是DOM提供的。
NodeList 会在删除组合时出现问题
动态NodeList在遍历中使用 i– 可以解决 出现错误数据的问题
childElementCount 获取子元素的个数
firstElementChild,lastElementChild,childElementCount
存在兼容问题
**对应解决:children[0] children[children.length-1] children.length
获取相邻兄弟元素兼容IE的解决方案
|
|