JS-案例-节点交换
2015-09-03 11:43
846 查看
需求: 为所有的 li 节点添加 onclick 响应函数 , 实现 city 子节点和 game 子节点对应位置的元素的互换;
实现代码:
实现代码:
<!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"> window.onload = function() { var liNodes = document.getElementsByTagName("li"); for(var i=0;i<liNodes.length;i++) { liNodes[i].index = i; //为每一个 li 节点添加 Onclick 响应函数 点击交换 liNodes[i].onclick = function() { var targetIndex = 0; if(this.index<4) { targetIndex = 4+this.index; } else { targetIndex = this.index-4; } //克隆的index属性虽然都带上了,但是在交换的过程每个node的index属性发生了变化, //需要进行互换,需要在对index属性 进行重新交换 var tempIndex = this.index; this.index = liNodes[targetIndex].index; liNodes[targetIndex].index = tempIndex; replaceNode(this,liNodes[targetIndex]); }; } }; //自定义的交换节点的方法 function replaceNode(Node00 , Node01) { var aParent = Node00.parentNode; var bParent = Node01.parentNode; if(aParent && bParent) { var cloneNewNode00 = Node00.cloneNode(true); //克隆的节点 要带上原节点onclick属性 和index属性也带上 cloneNewNode00.onclick = Node00.onclick; cloneNewNode00.index = Node00.index; bParent.replaceChild(cloneNewNode00,Node01); aParent.replaceChild(Node01,Node00); } } </script> </head> <body> <p>你喜欢哪个城市?</p> <ul id="city"> <li id="bj" name="beijing">北京</li> <li id="nj">南京</li> <li id="xj">西京</li> <li id="dj">东京</li> </ul> <br><br> <p>你喜欢哪类手机?</p> <ul id="game"> <li id="apple">苹果</li> <li id="sum">三星</li> <li id="huawei">华为</li> <li id="xiaomi">小米</li> </ul> <br> name:<input type="text" name="username" id="name" value="atguigu"> <br><br> gender: <input type="radio" name="gender" value="male"/>Male <input type="radio" name="gender" value="female"/>Female <form action="dom-7.html" name="myfrom"> <input type="radio" name="type" value="city">城市 <input type="radio" name="type" value="game">游戏 name:<input type="text" name="name"/> <input type="submit" value="Submit" id="submit"> </form> </body> </html>
相关文章推荐
- Javascript高级程序设计——执行环境与作用域
- JavaScript进度条(datalist/repeater等多个进度条)
- JSP学习 --- servlet的生命周期
- JavaScript学习笔记5-Javascript的this用法
- JavaScript图片上传前的图片预览功能
- 挑战JavaScript正则表达式每日两题(2)
- js,级联替换(图片)
- JSP笔记――9.Listener介绍
- JSP笔记――8.Filter介绍
- jsp页面第一行报错问题
- JSP笔记――7.自定义标签
- JSP笔记――6.Servlet简介
- JSP笔记――5.九个内置对象
- JSP笔记――4.七个动作指令
- JSP笔记――3.JSP的三个编译指令
- JSP笔记――2.四种基本语法
- JSP笔记――1.运行原理
- JS日期格式化
- js一些跳转网页以及自动弹出广告
- 悟透JavaScript