创建节点
createElement()
var node = document.createElement(“div”);
没什么可说的,创建一个元素节点,但注意,这个节点不会被自动添加到文档(document)里。

2、创建文本节点
createTextNode()
var value = document.createTextNode(“text”);
创建一个文本节点,常用来往元素节点里添加内容,也不会自动添加到文档里。
很多人知道innerHTML,不知道这个方法,这个添加的是静态文本,如果插入的内容不带HTML格式,用createTextNode比innerHTML安全,而innerText又有浏览器不兼容的问题,因此用createTextNode很好使。

3、插入节点到最后
appendChild()
node.appendChild(value);
将节点插入到最后,上面两个创建的节点不会自动添加到文档里,所以就要使appendChild来插入了。
如果是新的节点是插入到最后,而如果是已经存在的节点则是移动到最后,这点很多人注意不到,理解了这点,再和下面的方法结合,可以方便的移动操作节点。

4、插入节点到目标节点的前面
insertBefore()
var node = document.createElement(“div”);
var _p = document.createElement(“p”);
var _span = document.createElement(“span”);
node.appendChild(_p);
node.insertBefore(_span, _p);
<span>节点在<p>节点前面插入,其中第二个参数是可选,如果第二个参数不写,将默认添加到文档的最后,相当于appendChild。
同样,appendChild和insertBefore,如果是已存在节点,他们都会自动先删除原节点,然后移动到你指定的地方。
将节点移动到最前面的技巧:
if (node.parentNode.firstChild)

node.parentNode.insertBefore(node, node.parentNode.firstChild);
else node.parentNode.appendChild(node);

5、复制节点
cloneNode(boolean)
node.cloneNode(true);
node.cloneNode(false);
复制上面的div节点,参数true,复制整个节点和里面的内容;false,只复制节点不要里面的内容,复制后的新节点,也不会被自动插入到文档,需要用到3和4的方法去插入。

6、删除节点
removeChild()
node.removeChild(_p);
把上面的<p>节点从<div>里删除。不过一般情况下,不知道要删除的节点的父节点是什么,因此一般这么使:node.parentNode.removeChild(node);

7、替换节点
repalceChild(newNode, oldNode)
node.repalceChild(_p, _span);
把上面的<span>节点替换成<p>节点,注意无论是<span>还是<p>,都必须是<div>的子节点,或是一个新的节点。

8、设置节点属性
setAttribute()
node.setAttribute("title","abc");
不解释了,很容易明白。就说一句,用这个方法设置节点属性兼容好,但class属性不能这么设置。

9、获取节点属性
getAttribute()
node.getAttribute("title");
同8,获取节点属性。

10、判断元素是否有子节点
hasChildNodes
node.hasChildNodes;
返回boolean类型,因此将新节点插入到最前面的技巧:
var node = document.createElement(“div”);
var newNode = document.createElement(“p”);
if (node.hasChildNodes) node.insertBefore(newNode, node.firstChild);
else node.appendChild(node);

最后是DOM的属性:

nodeName - 节点的名字;
nodeType - 返回一个整数,代表这个节点的类型,1-元素节点,2-属性节点,3-文本节点;
nodeValue - 返回一个字符串,这个节点的值;
childNodes - 返回一个数组,数组由元素节点的子节点构成;
firstChild - 返回第一个子节点;
lastChild - 返回最后一个子节点;
nextSibling - 返回目标节点的下一个兄弟节点,如果目标节点后面没有同属于一个父节点的节点,返回null;
previousSibling - 返回目标节点的前一个兄弟节点,如果目标节点前面没有同属于一个父节点的节点,返回null;
parentNode - 返回的节点永远是一个元素节点,因为只有元素节点才有可能有子节点,document节点将返回null;

 

 

JavaScript操作DOM 建立增加删除克隆访问节点示例:

 

1.   getElementById(id)

这是通过id来访问某一元素,最常用的之一,例:

<html>

<body>

<div id="myid">

test

</div>

<script language="javascript">

alert(document.getElementById("myid").innerHTML);

</script>

</body>

</html>

注意点:如果元素的ID不是唯一,则会取得第一个该ID名称的元素

2.   getElementsByName(name)

这是通过name来取得某一堆元素(作为数组),看 Element后面有个小s就知道了,ID是HTML文档中要求唯一的,name可以不是唯一,如checkbox、radio等地方会用到多个 input用同一个name来识别是否为同党。对了,getElementsByName(name)仅用于取得input、radio、 checkbox等元素,如<inputname="myradio" type="radio" />

3. getElementsByTagName(tagname) 看这方法就知道这也是取得某一堆元素(作为数组),是通过TagName也就是标签名来取得。你可以遍历这个数组获得每一个单独的元素。当一个DOM结构很大时,可以通过它来有效地缩小搜查范围。

<html>

<head>

<script>

function test()

{

testall=document.getElementsByTagName("body");

testbody=testall.item(0);

//获得所有tagName是body的元素(当然每个页面只有一个)

testall=testbody.getElementsByTagName("p");

// 获得body子元素种的所有P元素

testnode=testall.item(1);

// 获得第二个P元素

alert(testnode.firstChild.nodeValue);

//显示这个元素的文本

}

</script>

</head>

<body>

<p>hi</p>

<p>hello</p>

<script language="javascript">

test();

</script>

</body>

</html>

4. appendChild(node)

向当前的元素(应该叫对象比较恰当)追加节点。

<html>

<body>

<head>

</head>

<div id="test"></div>

<script type="text/javascript">

varnewdiv=document.createElement("div")

varnewtext=document.createTextNode("A newdiv")

newdiv.appendChild(newtext)

document.getElementById("test").appendChild(newdiv)

</script>

</body>

</html>

刚才我在第一个例子中为了显示出内容,用了innerHTML,刚才看到文章才得知innerHTMl不属于DOM。

5. removeChild(childreference)

删除当前节点的子节点,返回被删除的节点。
这个被删除的节点可以被插入到别的地方

<html>

<body>

<div id="parent"><div id="child">Achild</div></div>

<script language="javascript">

varchildnode=document.getElementById("child")

varremovednode=document.getElementById("parent").removeChild(childnode)

</script>

</body>

</html>

6. cloneNode(deepBoolean)

复制并返回当前节点的复制节点,复制节点是一个孤立节点,它复制了原节点的属性,在把这个新节点加入到document前,根据需要修改ID属性确保其ID的唯一。

这个方法支持一个布尔参数,当deepBoolean设置true时,复制当前节点的所有子节点,包括该节点内的文本。

<html>

<body>

<p id="mynode">test</p>

<script language="javascript">

p=document.getElementById("mynode")

pclone =p.cloneNode(true);

p.parentNode.appendChild(pclone);

</script>

</body>

</html>

7. replaceChild(newChild, oldChild)

把当前节点的一个子节点换成另一个节点

<html>

<body>

<div id="mynode2">

<span id="orispan">span</span>

</div>

<script language="javascript">

var orinode=document.getElementById("orispan");

var newnode=document.createElement("p");

var text=document.createTextNode("test ppp ");

newnode.appendChild(text);

document.getElementById("mynode2").replaceChild(newnode,orinode);

</script>

</body>

</html>

javaScript操作DOM 建立 增加 删除 克隆 访问节点示例:

1. getElementById(id)      这是通过id来访问某一元素,最常用的之一,例:

<html>

<body>

<div id="myid">

test

</div>

<script language="javascript">

alert(document.getElementById("myid").innerHTML);

</script>

</body>

</html>

注意点:如果元素的ID不是唯一,则会取得第一个该ID名称的元素

2. getElementsByName(name)      这是通过name来取得某一堆元素(作为数组),看 Element后面有个小s就知道了,ID是HTML文档中要求唯一的,name可以不是唯一,如checkbox、radio等地方会用到多个 input用同一个name来识别是否为同党。对了,getElementsByName(name)仅用于取得input、radio、 checkbox等元素,如<input name="myradio" type="radio" />

3. getElementsByTagName(tagname) 看这方法就知道这也是取得某一堆元素(作为数组),是通过TagName也就是标签名来取得。你可以遍历这个数组获得每一个单独的元素。当一个DOM结构很大时,可以通过它来有效地缩小搜查范围。

<html>         <head>

<script>

function test() {

testall=document.getElementsByTagName("body");

testbody=testall.item(0); //获得所有tagName是body的元素(当然每个页面只有一个)

testall=testbody.getElementsByTagName("p");// 获得body子元素种的所有P元素

testnode=testall.item(1); // 获得第二个P元素         alert(testnode.firstChild.nodeValue); //显示这个元素的文本         }

</script>

</head>

<body>

<p>hi</p>

<p>hello</p>

<script language="javascript">

test();

</script>

</body>

</html>

4. appendChild(node)
      向当前的元素(应该叫对象比较恰当)追加节点。

<html>

<body>

<head>

</head>

<div id="test"></div>

<script type="text/javascript">

var newdiv=document.createElement("div")

var newtext=document.createTextNode("A new div")         newdiv.appendChild(newtext)

document.getElementById("test").appendChild(newdiv)

</script>

</body>

</html>

刚才我在第一个例子中为了显示出内容,用了innerHTML,刚才看到文章才得知innerHTMl不属于DOM。

5. removeChild(childreference)

删除当前节点的子节点,返回被删除的节点。
这个被删除的节点可以被插入到别的地方

<html>

<body>

<div id="parent"><div id="child">A child</div></div>

<script language="javascript">

var childnode=document.getElementById("child")

var removednode=document.getElementById("parent").removeChild(childnode)

</script>

</body>

</html>

6. cloneNode(deepBoolean)

复制并返回当前节点的复制节点,复制节点是一个孤立节点,它复制了原节点的属性,在把这个新节点加入到document前,根据需要修改ID属性确保其ID的唯一。

这个方法支持一个布尔参数,当deepBoolean设置true时,复制当前节点的所有子节点,包括该节点内的文本。

<html>

<body>

<p id="mynode">test</p>

<script language="javascript">

p=document.getElementById("mynode")

pclone = p.cloneNode(true);

p.parentNode.appendChild(pclone);

</script>

</body>

</html>

7. replaceChild(newChild, oldChild)

把当前节点的一个子节点换成另一个节点

<html>

<body>

<div id="mynode2">

<span id="orispan">span</span>

</div>

<script language="javascript">

var orinode=document.getElementById("orispan");

var newnode=document.createElement("p");

var text=document.createTextNode("test ppp ");

newnode.appendChild(text);

document.getElementById("mynode2").replaceChild(newnode, orinode);

</script>

</body>

</html>

JavaScript的DOM操作(节点操作)的更多相关文章

  1. JavaScript HTML DOM 元素(节点)

    JavaScript HTML DOM 元素(节点) 创建新的 HTML 元素 创建新的 HTML 元素 如需向 HTML DOM 添加新元素,您必须首先创建该元素(元素节点),然后向一个已存在的元素 ...

  2. JavaScript之DOM创建节点

    上几篇文章中我们罗列了一些获取HTML页面DOM对象的方法,当我们获取到了这些对象之后,下一步将对这些对象进行更改,在适当的时候进行对象各属性的修改就形成了我们平时看到的动态效果.具体js中可以修改D ...

  3. JavaScript HTML DOM元素节点常用操作接口

    在文档对象模型 (DOM) 中,每个节点都是一个对象.DOM 节点有三个重要的属性 : 1. nodeName : 节点的名称 2. nodeValue :节点的值 3. nodeType :节点的类 ...

  4. JavaScript 关于DOM的事件操作

    一.JavaScript的组成 JavaScript基础分为三个部分: ECMAscript:JavaScript的标准语法.包括变量,表达式,运算符,函数,if语句,for语句等. DOM:文档对象 ...

  5. DOM之节点操作

    DOM提供了很多实用的API,这些API让我们可以轻松的访问HTML文档.所谓API(应用程序接口),简单来说,就是让我们可以直接使用它访问程序的一些属性或方法,而不用了解程序内部的运作过程和原理. ...

  6. dom的节点操作

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. 深入理解DOM节点操作

    × 目录 [1]创建节点 [2]插入节点 [3]移除节点[4]替换节点[5]复制节点 前面的话 一般地,提起操作会想到“增删改查”这四个字,而DOM节点操作也类似地对应于此,接下来将详细介绍DOM的节 ...

  8. JS Dom节点操作demo!

    通过黑马课程的学习,在这里分享一个js Dom中节点操作的小练习 需求:使用js创建一个4*3的表格table. onload = function(){ function c(tagName){ r ...

  9. js 节点 document html css 表单节点操作

    js 节点 document html css 表单节点操作 节点操作:访问.属性.创建 (1)节点的访问:firstChild.lastChild.childNodes.parentChild(父子 ...

随机推荐

  1. 使用QtConcurrent编写多线程程序(也可以阻塞)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/Amnes1a/article/details/66470751Qt在其QtConcurrent命名空 ...

  2. How To Surf The Internet In Right Ways

    本文偏指导性质,具体实现自行探索~~ 科普 如何***既然想学点东西,就不能被网络束缚住.国内的网络环境,对于外面世界探索还是挺限制的. 什么是墙GFW(great firewall) 中国特有的.就 ...

  3. 002-基本业务搭建【日志,工具类dbutils,dbcp等使用】

    一.需求分析 1.1.概述 1.用户进入“客户管理”,通过列表方式查看用户: 2.客户名称,模糊查询用户列表 3.客户名称,可查看客户详细信息 4.新增.编辑.删除功能等 二.系统设计 需要对原始需求 ...

  4. split命令

    语法:split [OPTION]... [INPUT [PREFIX]]常用参数说明: -a, --suffix-length=N            generate suffixes of l ...

  5. 中间件 WSGI

    冒泡程序 array = [1, 2, 5, 3, 6, 8, 4] for i in range(len(array) - 1, 0, -1): print i for j in range(0, ...

  6. 推荐一款轻量级PHP数据库框架–Medoo

    引用官网的简介: 可以加快开发速度的最轻量级的PHP数据库框架 为什么选择Medoo及其主要功能: 轻量级–单个文件,只有20KB 易用–非常容易学习和使用 功能强大–支持各种常见和复杂的SQL查询 ...

  7. jQuery开发入门

    jQuery是JavaScript库中的优秀一员. 下载完jQuery框架文件jquery-1.9.0.js 后,不需要任何安装,仅需使用<script>文件导入标记,将该框架文件导入页面 ...

  8. Hibernate多对多关联

    多对多关联: 示例:Teacher和Student,一个Teacher可以教很多student,一个Student也可以被很多teacher教   多对多单向关联 Teacher知道自己教了哪些学生, ...

  9. SOA、SOAP、REST、RPC

    1.SOA SOA(面向服务的软件架构.Service Oriented Architecture),是一种软件设计模式,主要应用于不同应用组件之间通过某种协议来互操作.例如典型的  通信网络协议.因 ...

  10. Java 内部类、静态类内部类

    问: 什么是内部类? 答: 内部类(Inner Class)就是在一个类的内部再定义一个类,与之对应包含内部类的类被称为外部类. 问: 为什么要将一个类定义在另外一个类内部呢? 答: 内部类主要作用如 ...