7.操作节点
来源:互联网 发布:新理念网络教学平台 编辑:程序博客网 时间:2024/06/11 09:39
节点替换
1). replaceChild(): 把一个给定父元素里的一个子节点替换为另外一个子节点
var reference = element.replaceChild(newChild,oldChild);
返回值是一个指向已被替换的那个子节点的引用指针
2). 该节点除了替换功能以外还有移动的功能.
3). 该方法只能完成单向替换, 若需要使用双向替换, 需要自定义函数:
/** * 互换 aNode 和 bNode * @param {Object} aNode * @param {Object} bNode */function replaceEach(aNode, bNode){if(aNode == bNode){return;}var aParentNode = aNode.parentNode;//若 aNode 有父节点if(aParentNode){var bParentNode = bNode.parentNode;//若 bNode 有父节点if(bParentNode){var tempNode = aNode.cloneNode(true);bParentNode.replaceChild(tempNode, bNode);aParentNode.replaceChild(bNode, aNode);}}}
插入节点
1). insertBefore(): 把一个给定节点插入到一个给定元素节点的给定子节点的前面
var reference = element.insertBefore(newNode,targetNode);
节点 newNode 将被插入到元素节点 element 中并出现在节点 targetNode 的前面. 节点 targetNode 必须是 element 元素的一个子节点。
2). 自定义 insertAfter() 方法
/** * 将 newChild 插入到 refChild 的后边 * @param {Object} newChild * @param {Object} refChild */function insertAfter(newChild, refChild){var refParentNode = refChild.parentNode;//判断 refChild 是否存在父节点if(refParentNode){//判断 refChild 节点是否为其父节点的最后一个子节点if(refChild == refParentNode.lastChild){refParentNode.appendChild(newChild);}else{refParentNode.insertBefore(newChild, refChild.nextSibling);}}}
删除节点
1). removeChild(): 从一个给定元素里删除一个子节点
var reference = element.removeChild(node);
返回值是一个指向已被删除的子节点的引用指针. 某个节点被 removeChild() 方法删除时, 这个节点所包含的所有子节点将同时被删除.
如果想删除某个节点, 但不知道它的父节点是哪一个, parentNode 属性可以帮忙。
参考代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title><script type="text/javascript">/* * 为 #employeetable 的所有的 a 节点添加 Onclick 响应函数: * 1. 弹出确认对话框: 确定要删除 xx 的信息吗? xx 为当前 a 节点所在的 td 所在的 tr 的 * 第一个 td 子节点的文本值, 且要去除前后空格. * 2. 若点击 "确认" , 则删除 a 节点的所在的 行 * * 注意: * 1. a 节点是一个超级链接, 可以在其 onclick 事件中通过返回 false, 来取消默认行为 * 2. tr 的直接父节点为 tbody, 而不是 table * 3. 可以把去除前后空格的代码写成一个 trim(str) 函数. * * 为 #addEmpButton 添加 onclick 响应函数: * 1. 获取 #name, #email, #salary 的文本框的值 * 2. 利用 1 获取的文本值创建 3 个 td 节点, 在创建一个 tr 节点. 并把以上的 3 个 td * 节点价位 tr 节点的子节点 <tr><td>Tom</td><td>tom@tom.com</td><td>5000</td></tr> * 3. 在创建一个 td 节点: <td><a href="deleteEmp?id=xxx">Delete</a></td> * 4. 把 3 创建的 td 也加为 tr 的子节点. * 5. 再把 tr 加为 #employeetable 的 tbody 子节点的子节点. * 6. 为新创建的 tr 的 a 子节点添加 Onclick 响应函数, 使其也具备删除的功能. * * */ window.onload = function(){ function removeTr(aNoe){ var trNode = aNoe.parentNode.parentNode; var textContent = trNode.getElementsByTagName("td")[0] .firstChild.nodeValue; textContent = trim(textContent); var flag = confirm("确定要删除" + textContent + "的信息吗?"); if(flag){ trNode.parentNode.removeChild(trNode); } return false; } var aNodes = document.getElementById("employeetable") .getElementsByTagName("a"); for(var i = 0; i < aNodes.length; i++){ aNodes[i].onclick = function(){ removeTr(this); return false; } } document.getElementById("addEmpButton").onclick = function(){ var nameVal = document.getElementById("name").value; var emailVal = document.getElementById("email").value; var salaryVal = document.getElementById("salary").value; var nameTd = document.createElement("td"); nameTd.appendChild(document.createTextNode(nameVal)); var emailTd = document.createElement("td"); emailTd.appendChild(document.createTextNode(emailVal)); var salaryTd = document.createElement("td"); salaryTd.appendChild(document.createTextNode(salaryVal)); var tr = document.createElement("tr"); tr.appendChild(nameTd); tr.appendChild(emailTd); tr.appendChild(salaryTd); alert("aa"); //<td><a href="deleteEmp?id=xxx">Delete</a></td> var aNode = document.createElement("a"); aNode.href = "deleteEmp?id=xxx"; aNode.appendChild(document.createTextNode("Delete")); var aTd = document.createElement("td"); aTd.appendChild(aNode); tr.appendChild(aTd); aNode.onclick = function(){ removeTr(this); return false; } document.getElementById("employeetable") .getElementsByTagName("tbody")[0] .appendChild(tr); //value: 用于获取 html 表单元素的值 //alert(this.value); // //nodeValue: 用于获取文本节点的文本值. //alert(this.nodeValue); //null } function trim(str){ var reg = /^\s*|\s*$/g; return str.replace(reg, ""); } }</script></head><body><center><br> <br> 添加新员工 <br> <br> name: <input type="text"name="name" id="name" /> email: <input type="text"name="email" id="email" /> salary: <input type="text"name="salary" id="salary" /> <br> <br><button id="addEmpButton" value="abc">Submit</button><br> <br><hr><br> <br><table id="employeetable" border="1" cellpadding="5" cellspacing=0><tbody><tr><th>Name</th><th>Email</th><th>Salary</th><th> </th></tr><tr><td>Tom</td><td>tom@tom.com</td><td>5000</td><td><a href="deleteEmp?id=001">Delete</a></td></tr><tr><td>Jerry</td><td>jerry@sohu.com</td><td>8000</td><td><a href="deleteEmp?id=002">Delete</a></td></tr><tr><td>Bob</td><td>bob@tom.com</td><td>10000</td><td><a href="deleteEmp?id=003">Delete</a></td></tr></tbody></table></center></body></html>
0 0
- 7.操作节点
- 节点操作
- 节点操作
- 节点操作
- 节点操作
- w3c子节点操作
- javascript 节点操作
- document节点的操作
- Ext tree 节点操作
- DOM节点操作
- jq 对节点操作
- js操作dom节点
- dom节点操作1
- JqueryDOM操作-包裹节点
- JqueryDOM操作-查找节点
- JqueryDOM操作-创建节点
- JqueryDOM操作-复制节点
- JqueryDOM操作-删除节点
- 基于约束条件的SQL攻击
- caffe MAC版本10.12 (16A323)单机安装遇到的坑
- JavaScript IDE mac
- VS2008下QT开发环境搭建
- yii2 安装 500错误
- 7.操作节点
- CoordinatorLayout+Behavior讲解
- OpenCV之识别自己的脸——C++源码放送
- Python SMTP发送邮件
- USER command only available under a layer
- caffe小工具(分析log画输出折线)
- Linux系统启动过程
- 07.Java读取、创建xml(通过dom方式)
- css3图片背景定位全屏