zoukankan      html  css  js  c++  java
  • 007 替换节点

     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.运行结果

      

      

  • 相关阅读:
    洛谷 1443——马的遍历(广度优先搜索)
    jzoj C组 2017.1.21
    jzoj C组 2017.1.20 比赛
    jzoj C组 2017.1.19 比赛
    jzoj C组 2017.1.18 比赛
    jzoj C组 2017.1.17 比赛
    jzoj C组 2017.1.16 比赛
    jzoj C组 2017.1.15比赛
    [LCA][数学]JZOJ 4794 富爷说是一棵树
    [CDQ分治][带权并查集]JZOJ 4769
  • 原文地址:https://www.cnblogs.com/juncaoit/p/7183477.html
Copyright © 2011-2022 走看看