使用js完成节点的增删改复制等的操作


Posted in Javascript onJanuary 02, 2014

需求:完成节点的增删改复制的操作

用到的方法和属性:
1.获取某个节点的父节点
parentNode属性
2.获取某个节点的子节点集合
childNodes属性
3.创键一个新的节点
createTextNode(节点文本内容) document对象的方法 在某些浏览器上兼容性不是很好
createElement(对象) document对象的方法 例如:document.createElement("a");
4.给某个节点对象添加属性和属性值
setAttribute(属性,属性值); 例如:aNode.setAttribute("href","http://www.baidu.com");
5.替换某个节点下的子节点
replaceChild(新节点,原子节点);
6.将某个节点添加到一个节点下
appendChild(要添加的节点)
7.克隆某个节点

cloneNode() 不传参数和传入true参数一样,表示克隆该节点包括子节点

<!DOCTYPE html> 
<html> 
<head> 
<title>node_CURD.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 
<meta http-equiv="description" content="this is my page"> 
<meta http-equiv="content-type" content="text/html; charset=UTF-8"> 
<!--<link rel="stylesheet" type="text/css" href="./styles.css">--> 
<style type="text/css"> 
div{ 
border: red 1px solid; 
width: 200px; 
height: 50px; 
margin: 20px 30px; 
padding: 20px; 
} 
#div_1{ 
clear:both; 
background-color:#FF3366; 
} 
#div_2{ 
clear:both; 
background-color:#6699FF; 
} 
#div_3{ 
clear:both; 
background-color:#CCCC99; 
} 
#div_4{ 
clear:both; 
background-color:#00CC33; 
} 
</style> 
<script type="text/javascript"> 
// 增加方式一:给第一个div区域添加文本 
function addText(){ 
//1.获取要添加文本内容的节点 
var div_1Node = document.getElementById("div_1"); 
//2.创建一个文本节点。document对象的createTextNode(文本内容)方法。某些浏览器不支持。 
var TextNode = document.createTextNode("这不就显示了吗?"); 
//3.将文本节点添加到要添加的节点下appendChild(要添加的子节点实例)方法 
div_1Node.appendChild(TextNode); 
} 
// 增加方式二:给第一个div区域添加按钮 
function addButton(){ 
//1.获取要添加文本内容的节点 
var div_1Node = document.getElementById("div_1"); 
//2.创建一个节点。document对象的createElement() 
var aNode = document.createElement("input"); 
//3.给指定对象添加属性和属性值 
//aNode.setAttribute("type","button");//和下面一句代码达到的效果一样 
aNode.type="button"; 
aNode.setAttribute("value","按钮"); 
aNode.setAttribute("onclick","deleteText('div_1')"); 
//4.将文本节点添加到要添加的节点下appendChild(要添加的子节点实例)方法 
div_1Node.appendChild(aNode); 
} 
// 删除方式一:删除第二个区域的节点的子节点 
function deleteText(NodeId){ 
//1.获取块节点 
var divNode = document.getElementById(NodeId); 
//2.获取子节点,即文本节点 
var chileNode = divNode.childNodes[0]; 
//3.删除,传入一个参数true会删除其下所有子节点 
//chileNode.removeNode(); // 此方式在火狐和谷歌下不兼容 
divNode.removeChild(chileNode); 
} 
// 删除方式二:删除元素 
function deleteElement(){ 
//1.获取块节点 
var div_2Node = document.getElementById("div_2"); 
//2.获取父节点, 
var parentNode = div_2Node.parentNode; 
//3.删除 
parentNode.removeChild(div_2Node); 
} 
// 修改 
function UpdateText(){ 
//1获取要修改字符的区域的节点 
var div_3Node = document.getElementById("div_3"); 
//2.获取第一步中的子节点集合,指定到要修改的节点 
var childNode = div_3Node.childNodes[0]; 
//3.创建一个文本节点 
var newNode = document.createTextNode("哈哈,我把你替换了."); 
//4.用3步创建的节点替换2步骤中的节点 
//childNode.replaceNode(newNode);//此方式在火狐和谷歌下不兼容 
div_3Node.replaceChild(newNode,childNode); 
} 
//克隆 
function copyNode(){ 
//1.获取第四区域节点 
var div_1Node = document.getElementById("div_1"); 
//2.获取第一区域节点 
var div_4Node = document.getElementById("div_4"); 
//3.获得一个新节点通过克隆第四节点 
var newNode = div_4Node.cloneNode();//传入参数true表示克隆整个节点,包括子节点.默认是true参数的结果 
//4.将步骤3的新节点替换掉原来的第一节点 
div_1Node.parentNode.replaceChild(newNode,div_1Node); 
} 
</script> 
</head> 
<body> 
<div id="div_1"></div> 
<div id="div_2">这里是第二个区域</div> 
<div id="div_3">这里是第三个区域</div> 
<div id="div_4">这里是第四个区域</div> 
<hr /> 
<font size="12px">增:</font> 
<input type="button" value="给第一个区域增加文本" onclick="addText()" /> 
<input type="button" value="给第一个区域增加一个按钮" onclick="addButton()" /> 
<hr /> 
<font size="12px">删:</font> 
<input type="button" value="删除第二区域的文本内容" onclick="deleteText('div_2')" /> 
<input type="button" value="删除第二个区域" onclick="deleteElement()" /> 
<hr /> 
<font size="12px">改:</font> 
<input type="button" value="修改第三个区域中的内容" onclick="UpdateText()" /> 
<hr /> 
<font size="12px">克隆:</font> 
<input type="button" value="将第四区域克隆到第一区域" onclick="copyNode()" /> 
</body> 
</html>
Javascript 相关文章推荐
javascript 当前日期转化为中文的实现代码
May 13 Javascript
Juqery Html(),append()等方法的Bug解决方法
Dec 13 Javascript
js监听输入框值的即时变化onpropertychange、oninput
Jul 13 Javascript
javascript图片延迟加载实现方法及思路
Dec 31 Javascript
Bootstrap入门书籍之(三)栅格系统
Feb 17 Javascript
Javascript技术栈中的四种依赖注入详解
Feb 23 Javascript
微信小程序 扎金花简单实例
Feb 21 Javascript
从零学习node.js之详解异步控制工具async(八)
Feb 27 Javascript
js中json对象和字符串的理解及相互转化操作实现方法
Sep 22 Javascript
解决vue单页路由跳转后scrollTop的问题
Sep 03 Javascript
jQuery实现的简单歌词滚动功能示例
Jan 07 jQuery
Html5生成验证码的示例代码
May 10 Javascript
js实现动态改变字体大小代码
Jan 02 #Javascript
js创建元素(节点)示例
Jan 02 #Javascript
JavaScript获取客户端计算机硬件及系统等信息的方法
Jan 02 #Javascript
新增加的内容是如何将div的scrollbar自动移动最下面
Jan 02 #Javascript
javascript中处理时间戳为日期格式的方法
Jan 02 #Javascript
JS脚本defer的作用示例介绍
Jan 02 #Javascript
Javascript中常见的校验如域名、手机、邮箱等等
Jan 02 #Javascript
You might like
PHP脚本的10个技巧(6)
2006/10/09 PHP
php include加载文件两种方式效率比较
2010/08/08 PHP
PHP全概率运算函数(优化版) Webgame开发必备
2011/07/04 PHP
微信access_token的获取开发示例
2015/04/16 PHP
PHP实现的浏览器检查类
2016/04/11 PHP
php微信公众账号开发之前五个坑(一)
2016/09/18 PHP
PHP判断数组是否为空的常用方法(五种方法)
2017/02/08 PHP
PHP后台备份MySQL数据库的源码实例
2019/03/18 PHP
js中根据字数截取字符串,不能截断url
2012/01/12 Javascript
JavaScript加强之自定义callback示例
2013/09/21 Javascript
JavaScript使用指针操作实现约瑟夫问题实例
2015/04/07 Javascript
flash+jQuery实现可关闭及重复播放的压顶广告
2015/04/15 Javascript
详解AngularJS中的表格使用
2015/06/16 Javascript
Vue自定义图片懒加载指令v-lazyload详解
2020/12/31 Javascript
Vue中封装input组件的实例详解
2017/10/17 Javascript
详解SPA中前端路由基本原理与实现方式
2018/09/12 Javascript
JavaScript命名空间模式实例详解
2019/06/20 Javascript
p5.js临摹动态图形的方法
2019/10/23 Javascript
解决vue项目,npm run build后,报路径错的问题
2020/08/13 Javascript
[37:45]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS Orenda
2014/05/22 DOTA
[30:51]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第一局
2016/03/04 DOTA
python Opencv将图片转为字符画
2021/02/19 Python
Python中使用双下划线防止类属性被覆盖问题
2019/06/27 Python
python多环境切换及pyenv使用过程详解
2019/09/27 Python
不到20行实现Python代码即可制作精美证件照
2020/04/24 Python
pycharm 代码自动补全的实现方法(图文)
2020/09/18 Python
京东国际站:JOYBUY
2017/11/23 全球购物
兰蔻法国官方网站:Lancôme法国
2020/02/22 全球购物
小型女装店的创业计划书
2014/01/09 职场文书
2014三八妇女节活动总结
2014/03/01 职场文书
公司承诺书怎么写
2014/05/24 职场文书
四风查摆剖析材料
2014/10/10 职场文书
学生不参加考试检讨书
2015/02/19 职场文书
2015年求职自荐信范文
2015/03/04 职场文书
死磕 java同步系列之synchronized解析
2021/06/28 Java/Android
MySQL外键约束(FOREIGN KEY)案例讲解
2021/08/23 MySQL