替换节点

1.单点替换程序

  这种效果可以看出,虽然被替换了,但是下面节点也没移动了。

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <meta charset="UTF-8">
 5 <title>Insert title here</title>
 6 <script type="text/javascript">
 7     window.onload=function(){
 8         var bjNode=document.getElementById("bj");
 9         var rlNode=document.getElementById("rl");
10         var cityNode=document.getElementById("city");
11         alert(1);
12         cityNode.replaceChild(rlNode,bjNode);
13     }
14 </script>
15 </head>
16 <body>
17     <p>你喜欢哪个城市?</p>
18     <ul id="city">
19         <li id="bj" name="BeiJing">北京</li>
20         <li>上海</li>
21         <li>东京</li>
22         <li>首尔</li>
23     </ul><br><br>
24
25     <p>你喜欢哪款单机游戏?</p>
26     <ul id="game">
27         <li id="rl">红警</li>
28         <li>实况</li>
29         <li>极品飞车</li>
30         <li>魔兽</li>
31     </ul><br><br>
32 </body>
33 </html>

2.运行效果

  

  

3.节点互换

  这种方式需要函数cloneNode(true)

4.程序

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <meta charset="UTF-8">
 5 <title>Insert title here</title>
 6 <script type="text/javascript">
 7     window.onload=function(){
 8         var bjNode=document.getElementById("bj");
 9         var rlNode=document.getElementById("rl");
10         var cityNode=document.getElementById("city");
11         var gameNode=document.getElementById("game");
12         alert(1);
13         var bjNode2=bjNode.cloneNode(true);
14         //顺序不许弄反
15         gameNode.replaceChild(bjNode2,rlNode);
16         cityNode.replaceChild(rlNode,bjNode);
17
18     }
19 </script>
20 </head>
21 <body>
22     <p>你喜欢哪个城市?</p>
23     <ul id="city">
24         <li id="bj" name="BeiJing">北京</li>
25         <li>上海</li>
26         <li>东京</li>
27         <li>首尔</li>
28     </ul><br><br>
29
30     <p>你喜欢哪款单机游戏?</p>
31     <ul id="game">
32         <li id="rl">红警</li>
33         <li>实况</li>
34         <li>极品飞车</li>
35         <li>魔兽</li>
36     </ul><br><br>
37 </body>
38 </html>

5.运行结果

  

6.自定义互换函数

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
    window.onload=function(){
        var bjNode=document.getElementById("bj");
        var rlNode=document.getElementById("rl");
        var cityNode=document.getElementById("city");
        var gameNode=document.getElementById("game");
        alert(1);
        replaceEach(bjNode,rlNode);
    }
    //自定义互换两个节点的函数
    function replaceEach(aNode, bNode){
        //1. 获取 aNode 和 bNode 的父节点. 使用 parentNode 属性
        var aParent = aNode.parentNode;
        var bParent = bNode.parentNode;

        if(aParent && bParent){
            //2. 克隆 aNode 或 bNode
            var aNode2 = aNode.cloneNode(true);

            //3. 分别调用 aNode 的父节点和 bNode 的父节点的 replaceChild()
            //方法实现节点的互换
            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><br><br>

    <p>你喜欢哪款单机游戏?</p>
    <ul id="game">
        <li id="rl">红警</li>
        <li>实况</li>
        <li>极品飞车</li>
        <li>魔兽</li>
    </ul><br><br>
</body>
</html>

7.效果

  

8.对应节点的互换,并且可以多次互换

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <meta charset="UTF-8">
 5 <title>Insert title here</title>
 6 <script type="text/javascript">
 7     window.onload=function(){
 8         var liNodes = document.getElementsByTagName("li");
 9         //2. 为每一个 li 节点添加 Onclick 响应函数
10         for(var i = 0; i < liNodes.length; i++){
11             //手动为每个 li 节点添加一个 index 属性
12             liNodes[i].index = i;
13             liNodes[i].onclick = function(){
14                 //3. 找到和当前节点对应的那个 li 节点
15                 var targetIndex = 0;
16                 if(this.index < 4){
17                     targetIndex = 4 + this.index;
18                 }else{
19                     targetIndex = this.index - 4;
20                 }
21                 //交换 index 属性,这个是重点,每次替换时也将index一起互换
22                 var tempIndex = this.index;
23                 this.index = liNodes[targetIndex].index;
24                 liNodes[targetIndex].index = tempIndex;
25
26                 //4. 互换.
27                 replaceEach(this, liNodes[targetIndex]);
28             }
29         }
30
31     }
32     //自定义互换两个节点的函数
33     function replaceEach(aNode, bNode){
34         //1. 获取 aNode 和 bNode 的父节点. 使用 parentNode 属性
35         var aParent = aNode.parentNode;
36         var bParent = bNode.parentNode;
37
38         if(aParent && bParent){
39             //2. 克隆 aNode 或 bNode
40             var aNode2 = aNode.cloneNode(true);
41
42             //3. 分别调用 aNode 的父节点和 bNode 的父节点的 replaceChild()
43             //方法实现节点的互换
44             bParent.replaceChild(aNode2, bNode);
45             aParent.replaceChild(bNode, aNode);
46         }
47     }
48 </script>
49 </head>
50 <body>
51     <p>你喜欢哪个城市?</p>
52     <ul id="city">
53         <li id="bj" name="BeiJing">北京</li>
54         <li>上海</li>
55         <li>东京</li>
56         <li>首尔</li>
57     </ul><br><br>
58
59     <p>你喜欢哪款单机游戏?</p>
60     <ul id="game">
61         <li id="rl">红警</li>
62         <li>实况</li>
63         <li>极品飞车</li>
64         <li>魔兽</li>
65     </ul><br><br>
66 </body>
67 </html>

9.运行结果

  

  

时间: 2024-11-03 01:52:15

替换节点的相关文章

Unit03: 增加、删除和替换节点 、 常用 HTML DOM 对象

[创建和删除节点] 1.如何创建节点:(创建元素节点)3步: 1.先创建空元素对象: var newElem=document.createElement("标签名"); 2.设置必要属性: newElem.属性名="值"; newElem.innerHTML="文本"; 3.将新元素对象挂载到指定父元素下: - 追加:parent.appendChild(newElem); ***只有向已经存在页面中的元素追加新节点才会渲染: - 插入:par

克隆节点,替换节点

1.克隆节点介绍 2.替换节点 注意点:替换后的事件将不会存在 3.程序(克隆) <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script type="text/javascript" src="jquery-3.2.1.min.js">

JavaScript之DOM-5 增加、删除和替换节点(创建节点、插入节点、删除和替换节点)

一.创建节点 创建元素 - 使用如下方法可以创建一个新的元素节点: - document.createElement('元素名'); 创建文本节点 - 使用如下方法可以创建一个新的元素节点: - document.createTextNode('text'); 创建注释 - 使用如下方法可以创建一个HTML注释节点: - document.createComment('comment'); 创建文档片段 - 使用如下方法可以创建一个文档片段: - document.createDocumentF

替换节点(replaceChild())

replaceChild():方法将把一个给定父元素里面的一个子节点替换为另一个子节点: referencre = element.replaceChild(newChild,oldChild); oldChild节点必须是element元素子节点,他的返回值是一个指向已经被替换的那个子节点的引用指针. 在下例中,id属性值是content的元素还包含着一个id属性值是fineprint的元素,我们将用createElement()方法创建一个新的文本元素,再用replaceChild()方法把

jQuery DOM操作-复制节点、替换节点、包裹节点

clone(): 复制节点,默认无事件,如果传递了一个参数true,则表示在复制节点的同时复制元素中所绑定的事件. 1 <script type="text/javascript"> 2 $(function(){ 3 var $apple = $("ul li:eq(0)").clone(); 4 $("ul").append($apple); 5 }); 6 </script> replaceWith(): 将所有匹配

JQ 替换节点

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head> <title></title> <scri

替换节点及replaceEach方法

需求: 为所有的 li 节点添加 onclick 响应函数实现 city 子节点和 game 子节点对应位置的元素的互换 window.onload = function(){ //自定义互换两个节点的函数 function replaceEach(aNode, bNode){ //1. 获取 aNode 和 bNode 的父节点. 使用 parentNode 属性 var aParent = aNode.parentNode; var bParent = bNode.parentNode; i

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 = d

DOM 替换节点案例

<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> </head> <script type="text/javascript"> function replaceImg(){ var divNode=document.getElementById("div1"); v