JavaScript节点及列表操作实例小结


Posted in Javascript onAugust 05, 2015

本文实例总结了JavaScript节点及列表操作的方法。分享给大家供大家参考。具体如下:

(1)创建新节点

createDocumentFragment() //创建一个DOM片段
createElement() //创建一个具体的元素
createTextNode() //创建一个文本节点

(2)添加、移除、替换、插入

appendChild()
removeChild()
replaceChild()
insertBefore()

(3)查找

getElementsByTagName() //通过标签名称
getElementsByName() //通过元素的Name属性的值
getElementById() //通过元素Id,唯一性

本节要用到的html例子

<ul id="myList">
<li>项目一</li>
<li>项目二</li>
<li>项目三</li>
</ul>

1.创建元素节点

document.createElement() 方法 用于创建元素,接受一个参数,即要创建元素的标签名,返回创建的元素节点

var div = document.createElement("div"); //创建一个div元素
div.id = "myDiv"; //设置div的id
div.className = "box"; //设置div的class

创建元素后还要把元素添加到文档树中

2.添加元素节点

appendChild() 方法 用于向childNodes列表的末尾添加一个节点,返回要添加的元素节点

var ul = document.getElementById("myList"); //获得ul
var li = document.createElement("li"); //创建li
li.innerHTML = "项目四"; //向li内添加文本
ul.appendChild(li); //把li 添加到ul子节点的末尾

添加后:

<ul id="myList">
<li>项目一</li>
<li>项目二</li>
<li>项目三</li>
<li>项目四</li>
</ul>

appendChild() 方法还可以添加已经存在的元素,会将元素从原来的位置移到新的位置

var ul = document.getElementById("myList"); //获得ul
ul.appendChild(ul.firstChild); //把ul的第一个元素节点移到ul子节点的末尾

运行后(IE):

<ul id="myList">
<li>项目二</li>
<li>项目三</li>
<li>项目一</li>
</ul>

insertBefore() 方法 ,如果不是在末尾插入节点,而是想放在特定的位置上,用这个方法,该方法接受2个参数,第一个是要插入的节点,第二个是参照节点,返回要添加的元素节点

var ul = document.getElementById("myList"); //获得ul
var li = document.createElement("li"); //创建li
li.innerHTML= "项目四"; //向li内添加文本
ul.insertBefore(li,ul.firstChild); //把li添加到ul的第一个子节点前

添加后:

<ul id="myList">
<li>项目四</li>
<li>项目一</li>
<li>项目二</li>
<li>项目三</li>
</ul>
var ul = document.getElementById("myList"); //获得ul
var li = document.createElement("li"); //创建li
li.innerHTML= "项目四"; //向li内添加文本
ul.insertBefore(li,ul.lastChild); //把li添加到ul的子节点末尾

添加后:

<ul id="myList">
<li>项目一</li>
<li>项目二</li>
<li>项目三</li>
<li>项目四</li>
</ul>
var ul = document.getElementById("myList"); //获得ul
var li = document.createElement("li"); //创建li
li.innerHTML= "项目四"; //向li内添加文本
var lis = ul.getElementsByTagName("li") //获取ul中所有li的集合
ul.insertBefore(li,lis[1]); //把li添加到ul中的第二个li节点前

添加后:

<ul id="myList">
<li>项目一</li>
<li>项目四</li>
<li>项目二</li>
<li>项目三</li>
</ul>

3.移除元素节点

removeChild() 方法 ,用于移除节点,接受一个参数,即要移除的节点,返回被移除的节点,注意被移除的节点仍然在文档中,不过文档中已没有其位置了

var ul = document.getElementById("myList"); //获得ul
var fromFirstChild = ul.removeChild(ul.firstChild); //移除ul第一个子节点
var ul = document.getElementById("myList"); //获得ul
var lis = ul.getElementsByTagName("li") //获取ul中所有li的集合
ul.removeChild(lis[0]); //移除第一个li,与上面不同,要考虑浏览器之间的差异

4.替换元素节点

replaceChild() 方法 ,用于替换节点,接受两个参数,第一参数是要插入的节点,第二个是要替换的节点,返回被替换的节点

var ul = document.getElementById("myList"); //获得ul
var fromFirstChild = ul.replaceChild(ul.firstChild); //替换ul第一个子节点
var ul = document.getElementById("myList"); //获得ul;
var li = document.createElement("li"); //创建li
li.innerHTML= "项目四"; //向li内添加文本
var lis = ul.getElementsByTagName("li") //获取ul中所有li的集合
var returnNode = ul.replaceChild(li,lis[1]); //用创建的li替换原来的第二个li

5.复制节点

cloneNode() 方法,用于复制节点, 接受一个布尔值参数, true 表示深复制(复制节点及其所有子节点), false 表示浅复制(复制节点本身,不复制子节点)

var ul = document.getElementById("myList"); //获得ul
var deepList = ul.cloneNode(true); //深复制
var shallowList = ul.cloneNode(false); //浅复制

下面再给大家一个JavaScript建立列表项目,复制子节点的完整实例:

这段JavaScript代码显示和建立列表项目,复制子节点、复制节点树,是相当有用的一个例子,在建立树形菜单的时候尤其有用处。

运行效果如下图所示:

JavaScript节点及列表操作实例小结

具体代码如下:

<html>
<head>
<title>建立列表项目</title>
<script language="JavaScript">
function printChilds(objNode) {
  var strMsg = "节点名称 =" + objNode.nodeName + "\n";
  if (objNode.hasChildNodes()){
   var nodeCount = objNode.childNodes.length;
   strMsg += "子节点数 = " + objNode.childNodes.length + "\n";
   for(var i = 0; i < nodeCount; i++)
     strMsg += "标记名称 = " + objNode.childNodes[i].nodeName + "\n";
   alert(strMsg);
  }
}
function copyNode(objNode, objDupNode, deep){
  var tempNode = objDupNode.cloneNode(deep);
  objNode.appendChild(tempNode);
}
</script>
</haed>
<body id="myBody">
<h2>建立列表项目</h2>
<hr>
<ul id="myUL">
  <li>项目1
  <li>项目2
   <ol id="myOL">
     <li>次项目1
     <li>次项目2
   </ol>
  <li>项目3
</ul>
<form>
<input type="button" value="显示列表的子节点" onclick="printChilds(myUL)">
<input type="button" value="复制节点" onclick="copyNode(myUL, myUL.childNodes[1], false)">
<input type="button" value="复制节点树" onclick="copyNode(myUL.lastChild, myOL, true)">
</form>
</body>
</html>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
JavaScript 定义function的三种方式小结
Oct 16 Javascript
extjs grid设置某列背景颜色和字体颜色的方法
Sep 03 Javascript
jQuery中height()方法用法实例
Dec 24 Javascript
AngularJS实现Model缓存的方式
Feb 03 Javascript
AngularJS入门教程之AngularJS指令
Apr 18 Javascript
用jmSlip编写移动端顶部日历选择控件
Oct 24 Javascript
JavaScript函数基础详解
Feb 03 Javascript
JavaScript设计模式之策略模式详解
Jun 09 Javascript
基于Require.js使用方法(总结)
Oct 26 Javascript
详解设置Webstorm 利用babel将ES6自动转码成ES5
Dec 20 Javascript
用JS实现根据当前时间随机生成流水号或者订单号
May 31 Javascript
通过JavaScript下载文件到本地的方法(单文件)
Mar 17 Javascript
使用coffeescript编写node.js项目的方法汇总
Aug 05 #Javascript
coffeescript使用的方式汇总
Aug 05 #Javascript
JS基于FileSystemObject创建一个指定路径的TXT文本文件
Aug 05 #Javascript
JavaScript使用FileSystemObject对象写入文本文件内容的方法
Aug 05 #Javascript
js如何实现点击标签文字,文字在文本框出现
Aug 05 #Javascript
JavaScript实现删除,移动和复制文件的方法
Aug 05 #Javascript
解决jQuery uploadify在非IE核心浏览器下无法上传
Aug 05 #Javascript
You might like
探讨如何把session存入数据库
2013/06/07 PHP
8个PHP数组面试题
2015/06/23 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
PHP类的自动加载与命名空间用法实例分析
2020/06/05 PHP
js获取当前地址 JS获取当前URL的示例代码
2014/02/26 Javascript
javascript检测两个数组是否相似
2015/05/19 Javascript
javascript数组随机排序实例分析
2015/07/22 Javascript
JS组件Bootstrap实现下拉菜单效果代码
2016/04/26 Javascript
详解angularJs中自定义directive的数据交互
2017/01/13 Javascript
jQuery修改DOM结构_动力节点Java学院整理
2017/07/05 jQuery
微信小程序实现图片懒加载的示例代码
2017/12/13 Javascript
详解在React.js中使用PureComponent的重要性和使用方式
2018/07/10 Javascript
详解Vue.directive 自定义指令
2019/03/27 Javascript
jQuery zTree插件使用简单教程
2019/08/16 jQuery
jQuery实现每日秒杀商品倒计时功能
2019/09/06 jQuery
写给新手同学的vuex快速上手指北小结
2020/04/14 Javascript
vue在App.vue文件中监听路由变化刷新页面操作
2020/08/14 Javascript
vue+elementUI动态增加表单项并添加验证的代码详解
2020/12/17 Vue.js
Python numpy.array()生成相同元素数组的示例
2018/11/12 Python
Django使用redis缓存服务器的实现代码示例
2019/04/28 Python
Flask中sqlalchemy模块的实例用法
2020/08/02 Python
html5中去掉input type date默认样式的方法
2018/09/06 HTML / CSS
有750多个顶级品牌的瑞士时尚在线:ABOUT YOU
2017/01/04 全球购物
马来西亚和新加坡巴士票在线预订:CatchThatBus
2018/11/17 全球购物
法拉利英国精品店:Ferraris Boutique UK
2019/07/20 全球购物
四川成都导游欢迎词
2014/01/18 职场文书
《回乡偶书》教学反思
2014/04/12 职场文书
小学校长汇报材料
2014/08/20 职场文书
2014最新实习证明模板
2014/10/02 职场文书
庆六一开幕词
2015/01/29 职场文书
保送生自荐信
2015/03/06 职场文书
食品质检员岗位职责
2015/04/08 职场文书
2016年秋季新学期致辞
2015/07/30 职场文书
2016年学生会感恩节活动总结
2016/04/01 职场文书
2019自荐信范文集锦!
2019/07/03 职场文书
openstack中的rpc远程调用的方法
2021/07/09 Python