DOM2和DOM3

DOM2和DOM3

DOM1级主要定义的是HTML和XML文档的底层结构

DOM2级和DOM3级在这个结构的基础上引入更多的交互能力,模块:

DOM2级核心

DOM2级视图

DOM2级事件

DOM2级样式

DOM2级遍历和范围

DOM2级HTML

DOM变化

针对XML命名空间的变化

Node类型的变化

特定于命名空间的属性:

不带命名空间前缀的节点名称——localName属性

命名空间URI或者null——namespaceURI属性

命名空间前缀——prefix

命名空间相关的方法:

-isDefaultNamespace(namespaceURI)

-lookupNamespaceURI(prefix)——返回给定prefix的命名空间

-lookupPrefix(namespaceURI)——返回给定namespaceURI前缀

Document类型的变化

与命名空间相关的方法:

-createElementNS(namespaceURI,tagName)

-createAttributeNS(namespaceURI,attributeName)

-getElementByTagName(namespaceURI,tagName)

var svg=document.createElementNS("http://www.w3.org/2000/svg","svg");
var att=document.createAttributeNS("http://somewhere.com","random");
var elems=document.getElementsByTagNameNS("http://www.w3.org/1999/xhtml","*");

Element类型的变化

 -getAttributeNS()

-getAttributeNodeNS()

-getElementByTagNameNS()

-hasAttributeNS()

-removeAttributeNS()

-setAttributeNS()

-setAttributeNodeNS()

NamedNodeMap类型的变化

新增与命名空间有关的方法

-getNamedItemNS()

-removeNamedItemNS()

-setNamedItemNS()

其它方面的变化

DocumentType类型的变化

新增属性:publicId、systemId、internalSubset

Document类型的变化

方法importNode()

属性defaultView

为对象document.implementation增加方法

-createDocumentType()

-createDocument()

为document.implementation新增方法createHTMLDocument()

Node类型的变化

方法isSupported()

方法isSameNode()

方法isEqualNode()

方法setUserData()

框架的变化

新增框架属性contentDocument

样式

遍历

NodeIterator类型

主要方法:nextNode()、previousNode()

创建实例-document.createNodeIterator()

var div=document.getElementById("div1");
var filter=function(node){
    return node.tagName.toLowerCase()=="li"?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP;
};
var iterator=document.createNodeIterator(div,NodeFilter.SHOW_ELEMENT,filter,false);
var node=iterator.nextNode();
while(node!==null){
    alert(node.tagName);
    node=iterator.nextNode();
}

TreeWalker类型

创建实例——document.createTreeWalker()

主要方法:parentNode()、firstChild()、lastChild()、nextSibling()、previousSibling()、nextNode()、previousNode()

var div=document.getElementById("div1");
var filter=function(node){
    return node.tagName.toLowerCase()=="li"?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP;
};
var iterator=document.createTreeWalker(div,NodeFilter.SHOW_ELEMENT,filter,false);
var node=iterator.nextNode();
while(node!==null){
    alert(node.tagName);
    node=iterator.nextNode();
}

范围

方法createRange()

精细控制哪些节点包含在范围中:

-setStartBefore()

-setStartAfter()

-setEndBefore()

-setEndAfter()

var range1=document.createRange();
var range2=document.createRange();
var p1=document.getElementById("p1");
range1.selectNode(p1);
range2.selectNodeContents(p1);

用DOM范围实现复杂选择

-setStart()

-setEnd()

操作DOM范围中的内容

-deleteContents()

-extractContents()

-cloneContents()

var p1=deleteContents();
var p2=range.extractContents();
var p3=range.cloneContents();

插入DOM范围中的内容

范围内部插入节点——insertNode()

环绕范围插入内容——surroundContents()

折叠DOM范围

-collapse()

比较DOM范围

-compareBoundaryPoints()

复制DOM范围

-cloneRange()

清理DOM范围

-detach()

 

转载于:https://my.oschina.net/u/3240534/blog/856925

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值