码迷,mamicode.com
首页 > 其他好文 > 详细

理解DOM

时间:2014-09-06 00:58:12      阅读:278      评论:0      收藏:0      [点我收藏+]

标签:des   blog   http   io   使用   java   ar   for   sp   

什么是DOM

DOM 不是JavaScript,它是文档。DOM是一组用来描述脚本怎么样与结构化文档进行交互和访问的web标准。DOM定义了一系列对象,方法和属性,用于访问、操作和创建文档中的内容、结构、样式及行为。

DOM的级别: 

http://www.w3.org/DOM/DOMTR 

想知道你选择的浏览器支持何种W3C DOM特性,可以使用DOMImplementation对象,该对象在核心规范中规定。我这里打开chrome 调试工具在console中输入,结果可以看到:

bubuko.com,布布扣

DOM中的继承

浏览器解析html页面的标记时,会根据自己支持的W3C DOM模块把标记转换成对象。具体到<a>,改标签是一个DOM2 HTML规范中的HTMLAnchorElement对象,

该对象又扩展自其他对象,方式:Node>Element>HTMLElement >HTMLAnchorElement。

核心Node对象:

【参】 http://krook.org/jsdom/Node.html

每个Element都扩展自Node 对象http://www.w3.org/TR/domcore/#interface-element。Node对象的属性包括:nodeName nodeValue nodeType parentNode childNodes firstChild lastChild previousSibling nextSibling attributes 和 ownerDocument等。这些属性对于扩展自Node对象的所有DOM对象都是有效的。

检测某节点是否具有子节点或属性,可以使用hasChildNodes()和hasAttributes()。操作DOM节点树,插入节点可以使用appendChild()、insertBefore(),删除可以使用removeChild(oldNode),替换节点使用replaceChild(newNode,oldNode);

注意点,例如appendChild(currentNode),如果currentNode 是已经存在文档中的节点。那么操作结果是改节点被移动(而不是复制)到新位置。原因是,当前的currentNode是对原来存在的那个Node对象的引用,而不是相应对象的拷贝。

核心Element对象:

【参】http://www.w3.org/TR/dom/#interface-element,http://www.w3schools.com/jsref/dom_obj_all.asp

在Element对象的范围内,可以查找其他节点的唯一有效方法是getElementsByTagName(),该方法返回的是一个NodeList对象,其中包含了与给定标签名称匹配的所有祖先元素的引用。

常用的方法操作Element对象的属性,设置属性setAttribute(),移除属性removeAttribute()

核心Document对象:

【参】https://developer.mozilla.org/en-US/docs/Web/API/document

window.document 中的文档对象实际上是HTMLDocument 对象的一个实例。而HTMLDocument对象是从核心Document对象中继承了所有成员。

可以使用Document对象的方法创建节点:我们常常会用到creatElement()和createAttribute()。

Document对象它提供了两个重要的方法去查找节点:docuement.getElementsByTagName()和document.getElementById()。

document.documentElement属性是访问文档根元素的快捷方式,对浏览器中呈现的HTML文档而言,所谓的根元素就是<html>标签。

 

理解DOM

标签:des   blog   http   io   使用   java   ar   for   sp   

原文地址:http://www.cnblogs.com/sandycoding/p/3958889.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!