`
mutongwu
  • 浏览: 450667 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

DOM节点的创建与操作

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


IE下运行创建element的时候,可以同时设置属性:
if (client.browser.ie & & client.browser.ie < = 7){
    var iframe = document.createElement('<iframe name=\"myframe\"> < /iframe>');
    //create input element
    var input = document.createElement('<input type=\"checkbox\" />');
    //create button
    var button = document.createElement('<button type=\"reset\"> </button>');
    //create radio buttons
    var radio1 = document.createElement('<input type=\"radio\" name=\"choice\" value=\"1\" />');
    var radio2 = document.createElement('<input type=\"radio\" name=\"choice\" value=\"2\" />');
}


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


document.createDocumentFragment()创建一个未定义类型的DocumentFragment对象(继承自Node)
例子:
	var fragment = document.createDocumentFragment();
	var ul = document.getElementById('myList');
	var li = null;
	for (var i=0; i < 3; i++){
	li = document.createElement('li');
	li.appendChild(document.createTextNode('Item ' + (i+1)));
	   fragment.appendChild(li);
	}
	//alert(fragment.childNodes.length);//3
	//fargment中的子节点将被 'move' 到DOM tree中,它里面的内容被"清空"了。
	ul.appendChild(fragment);
		
	//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 的形式添加,如:
	 someNode.addEventListener('click',fn,false);// firefox ,chrome or other browers
	someNode.attachEvent('onclick',fn);//IE

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

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


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


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

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


附带 Document Object Model (Core) Level 1中关于几种节点的IDL 定义:
interface Document : Node {
  readonly attribute  DocumentType         doctype;
  readonly attribute  DOMImplementation    implementation;
  readonly attribute  Element              documentElement;
  Element                   createElement(in DOMString tagName)
                                          raises(DOMException);
  DocumentFragment          createDocumentFragment();
  Text                      createTextNode(in DOMString data);
  Comment                   createComment(in DOMString data);
  CDATASection              createCDATASection(in DOMString data)
                                               raises(DOMException);
  ProcessingInstruction     createProcessingInstruction(in DOMString target, 
                                                        in DOMString data)
                                                        raises(DOMException);
  Attr                      createAttribute(in DOMString name)
                                            raises(DOMException);
  EntityReference           createEntityReference(in DOMString name)
                                                  raises(DOMException);
  NodeList                  getElementsByTagName(in DOMString tagname);
};
interface Element : Node {
  readonly attribute  DOMString            tagName;
  DOMString                 getAttribute(in DOMString name);
  void                      setAttribute(in DOMString name, 
                                         in DOMString value)
                                         raises(DOMException);
  void                      removeAttribute(in DOMString name)
                                            raises(DOMException);
  Attr                      getAttributeNode(in DOMString name);
  Attr                      setAttributeNode(in Attr newAttr)
                                             raises(DOMException);
  Attr                      removeAttributeNode(in Attr oldAttr)
                                                raises(DOMException);
  NodeList                  getElementsByTagName(in DOMString name);
  void                      normalize();
};
interface HTMLElement : Element {
           attribute  DOMString            id;
           attribute  DOMString            title;
           attribute  DOMString            lang;
           attribute  DOMString            dir;
           attribute  DOMString            className;
};


interface CharacterData : Node {
           attribute  DOMString            data;
                                 // raises(DOMException) on setting
                                 // raises(DOMException) on retrieval
  readonly attribute  unsigned long        length;
  DOMString                 substringData(in unsigned long offset, 
                                          in unsigned long count)
                                          raises(DOMException);
  void                      appendData(in DOMString arg)
                                       raises(DOMException);
  void                      insertData(in unsigned long offset, 
                                       in DOMString arg)
                                       raises(DOMException);
  void                      deleteData(in unsigned long offset, 
                                       in unsigned long count)
                                       raises(DOMException);
  void                      replaceData(in unsigned long offset, 
                                        in unsigned long count, 
                                        in DOMString arg)
                                        raises(DOMException);
};

interface Text : CharacterData {
  Text                      splitText(in unsigned long offset)
                                      raises(DOMException);
};

interface DocumentFragment : Node {
};
分享到:
评论

相关推荐

    第06章 DOM节点操作(上)

    在本章“第06章 DOM节点操作(上)”中,我们将深入探讨Document Object Model(DOM)在JavaScript中的应用,以及如何通过DOM接口来操纵HTML或XML文档的结构、内容和样式。DOM是一种标准,它允许编程语言与网页内容...

    第06章 DOM节点操作(下)

    DOM节点操作是前端开发中的核心技能,对创建交互式网页至关重要。 一、节点类型 DOM中的每个元素都是一个节点,包括元素节点、属性节点、文本节点等。元素节点(如`&lt;div&gt;`、`&lt;p&gt;`)是文档结构的主要构成部分,属性...

    基本DOM节点操作

    1、获取元素节点 getElementById():获取指定唯一id的元素。 getElementByTagName():获取指定元素标签名的元素数组。 getElementByName():获取具有指定属性name的元素数组。 2、子节点 element.childNodes:返回该...

    domtoimage使用HTML5canvas从DOM节点生成图像

    "domtoimage使用HTML5canvas从DOM节点生成图像" 这个标题提到了一个名为 "domtoimage" 的工具,它利用HTML5的Canvas API将DOM(文档对象模型)中的节点转换为图像。这个过程通常用于网页截图或者在网页中保存和分享...

    jQuery DOM节点操作源码

    在"jQuery DOM节点操作源码"中,我们可以深入理解jQuery是如何优雅地处理DOM(Document Object Model)节点的。以下是关于jQuery DOM操作的一些关键知识点: 1. **选择器**:jQuery 的核心功能之一就是强大的选择器...

    JS实现DOM节点插入操作之子节点与兄弟节点插入操作示例

    知识点2:创建DOM节点 在JavaScript中,可以通过`document.createElement()`方法创建一个新的元素节点,这将返回一个代表新元素的DOM对象。例如,`var obj = document.createElement("p");`将会创建一个新的`&lt;p&gt;`...

    DOM 节点操作 【微重点】【案例】.pdf

    DOM节点操作的重要性在于,它可以帮助开发者创建动态的用户界面,响应用户的交互行为,例如通过鼠标悬停(mouseover)和鼠标离开(mouseout)事件来控制导航栏下拉菜单的显示和隐藏。通过使用DOM节点操作,开发者...

    DOM节点中元素节点与文本节点操作方法.pdf

    DOM提供了一系列方法来操作这些节点,如`createElement`和`appendChild`用于创建和添加新元素,`replaceChild`用于替换节点,`firstElementChild`和`lastElementChild`用于访问元素子节点,以及`nextElementSibling`...

    DOM对象中的节点操作.pdf

    文档对象模型(DOM)将Web页面与脚本语言或编程语言连接起来,为Web页面的结构化表示提供了一种方式。...通过深入学习和实践DOM节点操作,开发者可以有效地控制Web文档,实现更加丰富和动态的Web应用。

    14jQueryDOM节点操作.docx

    在Visual Studio环境下,我们可以利用jQuery进行DOM节点的创建、插入等操作。下面我们将详细探讨这些知识点: 1. **创建DOM节点** - 使用`document.createElement()`函数可以创建新的DOM元素。例如,创建一个带有...

    JS的简单DOM操作

    DOM(Document Object Model)是一种标准,它将网页内容组织成一棵结构化的节点树,允许通过编程方式对这些节点进行操作。 1. DOM基础 DOM将网页内容分为不同类型的节点,如: - Document:整个文档的根节点。 -...

    DOM访问/创建/删除/修改文档节点及属性方法

    DOM 访问、创建、删除、修改文档节点及属性方法 DOM(Document Object Model)是 HTML 和 XML 文档的编程接口,允许开发者使用脚本语言(如 JavaScript)来访问和操作文档的结构和内容。在这里,我们将详细介绍 DOM...

    纯JavaScript操作DOM节点

    纯JavaScript操作DOM节点,通过动态JS创建元素标签,自定义元素的个数,并显示序号和对应的正则表达式验证和图片类型大小验证,,在前端用户姓名和性别多选框的取值已拿到,最后把后面的if else代码放开就可以了,...

    【Web API DOM11】节点操作

    8. **DOM1与DOM2/3的区别**:尽管DOM11这个术语可能是指DOM1的一个扩展,实际上DOM1主要关注基本的节点操作,而DOM2引入了样式和事件接口,DOM3则增加了更多的功能,如XML支持和文档加载。 在实际项目中,掌握DOM...

    DOM和BOM的使用

    元素节点对象是指 DOM 中的元素节点对象,它提供了许多方法和属性,开发者可以通过这些方法和属性来操作文档的内容和结构。 innerHTML innerHTML 是指 DOM 中的 innerHTML 属性,它允许开发者通过 JavaScript 修改...

    利用vue.js插入dom节点的方法

    本篇文章将详细讲解如何在Vue.js中插入DOM节点,并探讨其与jQuery操作DOM的不同之处。 首先,Vue.js 提供了 `$mount` 方法用于创建组件实例并挂载到DOM中。例如,在给定的示例中,我们创建了四个组件:MyComponent...

    JQuery创建DOM节点的方法

    本文实例讲述了JQuery创建DOM节点的方法。分享给大家供大家参考。具体分析如下: 用JQuery选择器能够快捷而轻松地查找到文档中的某个特定的元素节点,然后可以用attr()方法来获取元素的各种属性的值。但真正的DOM...

    JS常见DOM节点操作示例【创建 ,插入,删除,复制,查找】

    总之,理解并熟练掌握DOM节点操作对于任何JavaScript开发者来说都是至关重要的,无论是在简单的页面交互还是复杂的Web应用程序中,这些基本操作都是构建动态用户界面的基础。通过DOM,我们可以实现诸如响应式设计、...

    用于节点操作的API,颠覆原生操作HTML DOM节点的API

    【标题】: "用于节点操作的API,颠覆原生操作HTML DOM节点的API" 【描述】: 敏捷开发是一种高效且灵活的软件开发方法,强调团队协作、迭代开发和快速响应变化。在敏捷开发中,软件项目被分解成多个小的、可测试的子...

    原生JS经典小项目-DOM练习

    在JavaScript中,我们经常需要对DOM节点进行集合操作,这就涉及到了数组方法。尽管DOM节点集合本身并不是真正的数组,但它们具有类似数组的特性,可以使用数组的一些方法。例如: 1. `forEach()`:遍历DOM节点集合...

Global site tag (gtag.js) - Google Analytics