JavaScript DOM编程 学习笔记-替换节点

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript">
	window.onload = function() {
		//测试replaceChild()方法
		var bjNode = document.getElementById("bj");
		var xyjNode = document.getElementById("xyj");

		var cityNode = document.getElementById("city");
		//cityNode.replaceChild(xyjNode, bjNode);

		//节点互换
		var bookNode = document.getElementById("book");
		/*
		var bjNode2 = bjNode.cloneNode(true);//true表示可以克隆子节点
		bookNode.replaceChild(bjNode2, xyjNode);
		cityNode.replaceChild(xyjNode, bjNode)
		*/
		replaceEach(bjNode, xyjNode);
	}

	//自定义互换函数
	function replaceEach(aNode, bNode){
		//alert(1);
		//1.获取aNode bNode的父节点
		var aParent = aNode.parentNode;
		var bParent = bNode.parentNode;

		if(aParent && bParent){
			var aNode2 = aNode.cloneNode(true);
			//cityNode.replaceChild(newChild, oldChild);
			bParent.replaceChild(aNode2, bNode);
			aParent.replaceChild(bNode, aNode);
		}
	}
</script>
</head>
<body>
	<p>你喜欢哪个城市?</p>
	<ul id="city">
		<li id="bj" name="beijing">北京</li>
		<li>上海</li>
		<li>武汉</li>
		<li>深圳</li>
	</ul>
	<p>你喜欢哪本书?</p>
	<ul id="book">
		<li id="xyj" name="xyj">西游记</li>
		<li>三国演义</li>
		<li>水浒传</li>
	</ul>

	<br />
	<form action="#" name="myForm">
		<input type="radio" name="type" value="city"/>城市
		<input type="radio" name="type" value="book"/>BOOK
		<input type="text" name="myName"/>
		<input type="submit" value="submit" id="submit"/>
	</form>
</body>
</html>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript">
	//实现city和book对应子节点的互换
	window.onload = function() {
		//JS里没有局部变量和全局变量概念
		//获取所有的li节点
		var liNodes = document.getElementsByTagName("li");

		var length = liNodes.length;
		//为li节点添加onclick方法
		for(var i= 0; i < liNodes.length; i++){
			//每个li节点添加一个index属性
			liNodes[i].index = i;

			liNodes[i].onclick = function(){
				var targetIndex = 0;
				//length必须为偶数,否则会出问题
				if(this.index < length/2){
					targetIndex = length/2 + this.index;
				}else{
					targetIndex = this.index - length/2;
				}
				//alert(liNodes[targetIndex].firstChild.nodeValue);
				//交换index属性
				//alert(this.index);
				var tempIndex = this.index;
				this.index = liNodes[targetIndex].index;
				liNodes[targetIndex].index = tempIndex;

				replaceEach(this, liNodes[targetIndex]);//交换两个节点及事件
			}
		}
	}

	//自定义互换函数
    function replaceEach(aNode, bNode){
        //alert(1);
        //1.获取aNode bNode的父节点
        var aParent = aNode.parentNode;
        var bParent = bNode.parentNode;
         
        if(aParent && bParent){
            var aNode2 = aNode.cloneNode(true);
            //克隆aNode节点时把aNode的onclick事件也克隆
            aNode2.onclick = aNode.onclick;
            //克隆index
            aNode2.index = aNode.index;
            //cityNode.replaceChild(newChild, oldChild);
            bParent.replaceChild(aNode2, bNode);
            aParent.replaceChild(bNode, aNode);
        }
    }
</script>
</head>
<body>
	<p>你喜欢哪个城市?</p>
	<ul id="city">
		<li id="bj" name="beijing">北京</li>
		<li>上海</li>
		<li>深圳</li>
		<li>深圳2</li>
	</ul>
	<p>你喜欢哪本书?</p>
	<ul id="book">
		<li id="xyj" name="xyj">西游记</li>
		<li>三国演义</li>
		<li>水浒传</li>
		<li>水浒传2</li>
	</ul>
	<br />
</body>
</html>
时间: 2024-12-06 13:06:58

JavaScript DOM编程 学习笔记-替换节点的相关文章

JavaScript DOM编程 学习笔记-删除节点

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript"> //测试removeChild()方法  删除节点 window.onload = function() { //alert(1

JavaScript DOM编程 学习笔记-获取元素节点

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript"> window.onload = function() { //在编写html文档时需要确定id属性值是唯一的 //该方法为doc

JavaScript DOM编程 学习笔记-节点属性

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript"> //关于节点的属性:nodeType  nodeName  nodeValue //在HTML文档中,任何一个节点都有这三个属性

JavaScript DOM编程 学习笔记-创建并接入节点

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript"> //新创建一个元素节点,并把该节点添加为文档中指定节点的子节点 window.onload = function() { //创

JavaScript DOM编程 学习笔记-两个小示例

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript"> window.onload = function() { //点击每个li节点都弹出其文本值 var liNodes = doc

JavaScript DOM编程 学习笔记

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript"> //整个HTML文档加载完成之后出发window.onload事件,事件出发后执行function函数体 window.onlo

DOM编程 学习笔记(一)

PS:虽然自己JS基本语法算是掌握了,但是其实在JS掌握的只是远远还不够,网页上有太多好看的动态效果都是用JS 做出来的,自己也就仅仅会那么一两个动态的效果,学的只是皮毛...等有空的时候一定要好好的研究那些动态效果 的制作,实在是太炫酷了...先开始DOM的基本语法吧...等DOM和JQuery的基本语法和用法搞定后就去深入的研究 研究那些动态效果的制作... DOM编程 学习内容 1.DOM简单介绍 2.DOM解析方式 3.在网页中使用DOM编程 4.DOM window对象以及Loacti

JavaScript面向对象编程学习笔记

1  Javascript 面向对象编程 所谓"构造函数",其实就是一个普通函数,但是内部使用了this变量.对构造函数使用new运算符,就能生成实例,并且this变量会绑定在实例对象上. 自动含有一个constructor属性,指向它们的构造函数. Javascript还提供了一个instanceof运算符,验证原型对象与实例对象之间的关系. Javascript规定,每一个构造函数都有一个prototype属性,指向另一个对象.这个对象的所有属性和方法,都会被构造函数的实例继承.

轻松学习JavaScript二十:DOM编程学习之获取节点

我们这里所说的获取节点包含元素节点,属性节点和文本节点.通常,通过DOM我们就能够操作HTML元素.为 了做到这件事情,您必须首先找到该元素.W3C提供了比较方便简单的定位节点的方法和属性,以便我们快速的对节 点进行操作. 我们先来写一个简单的HTML文档以供我们进行测试,并且JS代码都是写在window.onload事件中: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://w