`
123003473
  • 浏览: 1069842 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

DOM节点的创建与操作[转载]

 
阅读更多
document.createElement(element): 创建一个标签为element的Element节点。
注意:
    在HTML中,element大小写不敏感;在XML(XHTML)中大小写敏感。
例子:
1.var el = document.createElement("div");        
2.el.id = "myDiv";   
3.el.className = "nav";   
4.document.appendChild(el); 


IE下运行创建element的时候,可以同时设置属性:

1.if (client.browser.ie & & client.browser.ie < = 7){   
2.    var iframe = document.createElement('<iframe name=\"myframe\"> < /iframe>');   
3.    //create input element   
4.    var input = document.createElement('<input type=\"checkbox\" />');   
5.    //create button   
6.    var button = document.createElement('<button type=\"reset\"> </button>');   
7.    //create radio buttons   
8.    var radio1 = document.createElement('<input type=\"radio\" name=\"choice\" value=\"1\" />');   
9.    var radio2 = document.createElement('<input type=\"radio\" name=\"choice\" value=\"2\" />');   
10.}  


document.createTextNode("string");创建内容为string的文本节点
 var element = document.createElement('div');   
2.    element.className = 'message';   
3.    var textNode = document.createTextNode('Hello world!');   
4.    element.appendChild(textNode);   
5.    var anotherTextNode = document.createTextNode('Yippee!');   
6.    element.appendChild(anotherTextNode);   
7.    document.body.appendChild(element);   
8.    alert(element.childNodes.length); //2   
9.    /*  
10.    上述代码中,element将会有2个child因为我们创建了2个Text Node,这可能不是我们想要的结果,调用normalize()方法,可以使得节点下面的文本节点内容进行“拼接”:  
11.*/  
12.    element.normalize();   
13.    alert(element.childNodes.length); //1   
14.    alert(element.firstChild.nodeValue); //”Hello World!Yippee!” 


document.createDocumentFragment()创建一个未定义类型的DocumentFragment对象(继承自Node)
1.var fragment = document.createDocumentFragment();   
2.var ul = document.getElementById('myList');   
3.var li = null;   
4.for (var i=0; i < 3; i++){   
5.li = document.createElement('li');   
6.li.appendChild(document.createTextNode('Item ' + (i+1)));   
7.   fragment.appendChild(li);   
8.}   
9.//alert(fragment.childNodes.length);//3   
10.//fargment中的子节点将被 'move' 到DOM tree中,它里面的内容被"清空"了。   
11.ul.appendChild(fragment);   
12.       
13.//alert(fragment.childNodes.length);//0 


newNode =someNode.cloneNode(bool)
newNode =someNode.cloneNode(bool): 克隆someNode,返回克隆后的节点。bool = true表示深度克隆,将会克隆someNode的下属所有子节点;bool = false为浅克隆,仅克隆someNode本身。克隆的节点将拥有和原有节点一样的属性,如ID等
    有关克隆的'事件处理':
    1.如果事件函数直接添加在HTML页面上,如<li onclick="fn();"></li>,那么,克隆得到的节点也将拥有该事件,就好比该事件处理函数也是节点的一个属性一般。
    2.如果事件函数以DOM LEVEL 0 的形式添加,如:
  someNode.onclick = fn;
      那么,克隆后的节点newNode不会拥有该事件函数。
    3.如果事件函数以DOM LEVEL 2 的形式添加,如:
1.someNode.addEventListener('click',fn,false);// firefox ,chrome or other browers   
2.omeNode.attachEvent('onclick',fn);//IE  

则在firefox,chrome中,克隆后的节点不会拥有该事件函数,而在IE中,克隆后的节点也会拥有该处理函数。

someNode.appendChild(newNode)
将newNode添加作为someNode的最后一个子节点,返回值为 newNode.newNode将从DOM原来的位置被自动移除,然后作为someNode的最后一个节点出现在DOM上,换句话说,这是一种'move'操作,而不是'copy'操作。
    例子:
1.var returnedNode = someNode.appendChild(someNode.firstChild);   
2.alert(returnedNode == someNode.firstChild); //false   
3.alert(returnedNode == someNode.lastChild); //true  


someNode.insertBefore(newNode,oldNode)
将newNode插入到oldNode之前。返回newNode.如果oldNode为null,则操作结果相同于someNode.appendChild(newNode);
1.returnedNode = someNode.insertBefore(newNode, null);   
2.alert(newNode == someNode.lastChild); //true  


someNode.replaceChild(newNode, oldNode): 用newNode(不能为空)替换oldNode.

someNode.removeChild(oldNode):删除someNode的子节点oldNode(包括它下面的所有子节点).

附带 Document Object Model (Core) Level 1中关于几种节点的IDL 定义:
1.interface Document : Node {   
2.  readonly attribute  DocumentType         doctype;   
3.  readonly attribute  DOMImplementation    implementation;   
4.  readonly attribute  Element              documentElement;   
5.  Element                   createElement(in DOMString tagName)   
6.                                          raises(DOMException);   
7.  DocumentFragment          createDocumentFragment();   
8.  Text                      createTextNode(in DOMString data);   
9.  Comment                   createComment(in DOMString data);   
10.  CDATASection              createCDATASection(in DOMString data)   
11.                                               raises(DOMException);   
12.  ProcessingInstruction     createProcessingInstruction(in DOMString target,    
13.                                                        in DOMString data)   
14.                                                        raises(DOMException);   
15.  Attr                      createAttribute(in DOMString name)   
16.                                            raises(DOMException);   
17.  EntityReference           createEntityReference(in DOMString name)   
18.                                                  raises(DOMException);   
19.  NodeList                  getElementsByTagName(in DOMString tagname);   
20.};   
21.interface Element : Node {   
22.  readonly attribute  DOMString            tagName;   
23.  DOMString                 getAttribute(in DOMString name);   
24.  void                      setAttribute(in DOMString name,    
25.                                         in DOMString value)   
26.                                         raises(DOMException);   
27.  void                      removeAttribute(in DOMString name)   
28.                                            raises(DOMException);   
29.  Attr                      getAttributeNode(in DOMString name);   
30.  Attr                      setAttributeNode(in Attr newAttr)   
31.                                             raises(DOMException);   
32.  Attr                      removeAttributeNode(in Attr oldAttr)   
33.                                                raises(DOMException);   
34.  NodeList                  getElementsByTagName(in DOMString name);   
35.  void                      normalize();   
36.};   
37.interface HTMLElement : Element {   
38.           attribute  DOMString            id;   
39.           attribute  DOMString            title;   
40.           attribute  DOMString            lang;   
41.           attribute  DOMString            dir;   
42.           attribute  DOMString            className;   
43.};   
44.  
45.  
46.interface CharacterData : Node {   
47.           attribute  DOMString            data;   
48.                                 // raises(DOMException) on setting   
49.                                 // raises(DOMException) on retrieval   
50.  readonly attribute  unsigned long        length;   
51.  DOMString                 substringData(in unsigned long offset,    
52.                                          in unsigned long count)   
53.                                          raises(DOMException);   
54.  void                      appendData(in DOMString arg)   
55.                                       raises(DOMException);   
56.  void                      insertData(in unsigned long offset,    
57.                                       in DOMString arg)   
58.                                       raises(DOMException);   
59.  void                      deleteData(in unsigned long offset,    
60.                                       in unsigned long count)   
61.                                       raises(DOMException);   
62.  void                      replaceData(in unsigned long offset,    
63.                                        in unsigned long count,    
64.                                        in DOMString arg)   
65.                                        raises(DOMException);   
66.};   
67.  
68.interface Text : CharacterData {   
69.  Text                      splitText(in unsigned long offset)   
70.                                      raises(DOMException);   
71.};   
72.  
73.interface DocumentFragment : Node {   
74.};  


[转载]:http://mutongwu.iteye.com/blog/709860
分享到:
评论

相关推荐

    [转载]常用的三种树形菜单

    jQuery是一个广泛使用的JavaScript库,简化了DOM操作,使得创建交互式树形菜单更加便捷。例如,可以使用jQuery的`slideToggle()`函数来优雅地展开和折叠节点。 4. **AJAX与异步加载**: 当数据量较大时,为了提高...

    [转载] JAXB中Java对象和XML之间的转换

    JAXB提供了`Unmarshaller`接口,通过`unmarshal()`方法,可以从XML输入源(如文件、流或DOM节点)创建Java对象。 4. **注解驱动的绑定**: JAXB支持使用注解来定制Java类和XML之间的映射。例如,`@XmlElementWrapper...

    TinyXML中文指南

    上述代码段展示了创建一个XML声明节点和一个元素节点,并将文本节点与元素节点链接起来,最终将整个文档保存到"madeByHand.xml"文件的过程。 除了基本的加载和保存操作,TinyXML还提供了遍历DOM结构的功能,允许...

    ztree源码以及api和demo

    2. **View模块**:处理DOM元素的创建、渲染和更新,实现了zTree的界面展示。 3. **Tool模块**:提供了各种工具函数,如字符串处理、数组操作、时间处理等。 4. **Event模块**:处理用户交互事件,如点击、拖拽等,...

    xml 解析,下边是位哥们的全新奉献,这里我转载了,谢谢这位哥们。。

    1. DOM解析:DOM将整个XML文档加载到内存中,创建一个树形结构,允许开发者通过节点遍历和操作XML文档。这种方式适用于小型XML文件,因为大型文件可能会消耗大量内存。 2. SAX解析:SAX是一种事件驱动的解析方式,...

    被别人复制内容时加自己网址

    - **节点操作**:DOM提供了丰富的API用于查询、创建、删除和修改节点,如`document.selection.createRange()`用于获取文档的选中范围。 ### 知识点三:版权保护策略 #### 3.1 版权声明的法律意义 在互联网环境下...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该文献之人无任何关系。谢谢合作 本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该文献之人无任何关系。谢谢合作 本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该文献之人无任何关系。谢谢合作 本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该文献之人无任何关系。谢谢合作 本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地...

Global site tag (gtag.js) - Google Analytics