27、任务二十四——选中、删除、添加节点

0、题目

  • 基于任务23,添加节点的选择、增加与删除的功能
  • 点击某个节点元素,则该节点元素呈现一个特殊被选中的样式
  • 增加一个删除按钮,当选中某个节点元素后,点击删除按钮,则将该节点及其所有子节点删除掉
  • 增加一个输入框及一个“添加”按钮当选中某个节点元素后,点击增加按钮,则在该节点下增加一个子节点,节点内容为输入框中内容,插入在其子节点的最后一个位置

1、解题过程

task24.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>IFE JavaScript Task 24</title>
    <style>
        div{
            display: inline-block;
            border:1px solid black;
            box-sizing: border-box;
        }
        .one{
            height:140px;
            padding:10px;
        }
        .two{
            height:120px;
            padding:10px;
        }
        .three{
            height:100px;
            padding:10px;
        }
        .four{
            height:80px;
            padding:10px;
        }
        .five{
            width:60px;
            height:60px;
        }
        button{
            margin:50px;
            height:30px;
            width:50px;
        }
        .newDiv{
            width:50px;
            height:50px;
            margin:5px;
        }
    </style>
  </head>
<body>
    <section id="content">
    <div id="super" class="one">
    Super
        <div  class="two">
        Car
            <div class="three">
            Apple
                <div class="four">Poor</div>
                <div class="four">Pig</div>
                <div class="four">Cola</div>
                <div class="four">Soccer</div>
            </div>
            <div class="three">
            Phone
            </div>
            <div class="three">
                <div class="four">Book</div>
                <div class="four">School</div>
            </div>
        </div>
        <div  class="two">
        Note
            <div class="three">
            Human
                <div  class="four">Code</div>
                <div  class="four">Operate</div>
                <div  class="four">Mon</div>
            </div>
            <div  class="three">
            Progrom
                <div class="four">
                Bement
                    <div class="five">Cat</div>
                </div>
                <div class="four">Glass</div>
            </div>
        </div>
        <div  class="two">Fish</div>
    </div>
    </section>
    <button id="button">遍历</button>
    <input type="text" id="checkContent">
    <button id="check">查询</button>
    <button id="delete">删除</button>
    <input id="insertContent" type="text">
    <button id="insert">插入</button>

<script type="text/javascript" src="task24.js"></script>
</body>
</html>

task24.js

var tree=document.getElementById("super"),
    list=[],
    a=undefined,
    timer=null,
    check=document.getElementById("check"),
    button=document.getElementById("button");
//深度优先遍历
function travel(node){
    if(node!=null){
        list.push(node);
        for(var i=0;i<node.children.length;i++){
            if(node.children[i].nodeType==1){
                travel(node.children[i]);
            }
        }
    }
}
//依次改变数组list中的元素背景颜色
function show(a){
    var input=document.getElementById(‘checkContent‘).value;
    i = 0;
    list[i].style.backgroundColor=‘blue‘;
    timer = setInterval(function () {
        i++;
        if (i < list.length) {
            var content=list[i].firstChild.nodeValue.replace(/(^\s*)|(\s*$)/g, "") ;
            if(input==content&&content&&a==1){
                clearInterval(timer);
                list[i].style.backgroundColor="red";
                list[i-1].style.backgroundColor="#fff";
            }
            else{
                list[i-1].style.backgroundColor = ‘#fff‘;
                list[i].style.backgroundColor = ‘blue‘;
            }
        }
        else {
            clearInterval(timer);
            list[list.length-1].style.backgroundColor = ‘#fff‘;
            if(a==1) alert("未找到输入的值!");
        }
    },500);
}
//深度优先遍历
button.addEventListener("click",function(){
    origin();
    travel(tree);
    show(0);
});
//查询函数
check.addEventListener("click",function(){
    origin();
    travel(tree);
    show(1);
});
//初始状态
function origin(){
    list=[];
    clearInterval(timer);
    var divs=document.getElementsByTagName("div");
    for(var i=0;i<divs.length;i++){
        divs[i].style.backgroundColor="#fff";
    }
}

document.getElementById("content").addEventListener("click",function(e){
    var target=e.target;
    if(target.nodeName!="DIV") return;
    target.style.backgroundColor="#caf";
    //点击元素被删除
    document.getElementById("delete").onclick=function(){
        target.parentNode.removeChild(target);
        origin();
    }
    //插入节点
    document.getElementById("insert").onclick=function(){
        var insertCont=document.getElementById("insertContent").value;
        var content=target.innerHTML;
        target.innerHTML=content+"<div class=‘newDiv‘>"+insertCont+"</div>";
    }
});

2、遇到的问题

样式的问题,太太太丑了!!!!!!!!!

时间: 2024-11-06 18:29:35

27、任务二十四——选中、删除、添加节点的相关文章

redis cluster 添加 删除 重分配 节点

redis cluster配置好,并运行一段时间后,我们想添加节点,或者删除节点,该怎么办呢.  一,redis cluster命令 //集群(cluster) CLUSTER INFO 打印集群的信息 CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息. //节点(node) CLUSTER MEET <ip> <port> 将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子. CLUSTER FORGET <n

redis cluster中添加删除重分配节点例子

redis cluster配置好,并运行一段时间后,我们想添加节点,或者删除节点,该怎么办呢. 一,redis cluster命令行     //集群(cluster)  CLUSTER INFO 打印集群的信息  CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息.     //节点(node)  CLUSTER MEET <ip> <port> 将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子.  CLUSTER

js添加、修改、删除xml节点例子

version="1.0" encoding="gb2312"?> 02. <bookstore> 03. <book genre="fantasy" isbn="2-3631-4"> 04. <title>Oberons Legacy</title> 05. <author>Corets, Eva</author> 06. <price>

使用delphi 开发多层应用(二十四)KbmMW 的消息方式和创建WIB节点

KbmMW 中支持基于UDP的消息广播,也支持TCP/IP hub/spoke 方式,还有 基于UDP或者TCP/IP 的点对点的消息传输. 1.基于UDP的消息广播 根据UDP  的工作原理,在同一个网段里面,可以发布广播包.这样发布者只需要发布一次, 消息就可以被同一网段上的所有订阅者收到.这样大大的降低了网络带宽.这个方式的最大缺点是 无法直接跨越网段,如果要跨越网段,就需要建立一个Gateway. Gateway 就是一个程序,连接两个网段. 它接受第一个网段的广播消息,然后再广播到第二

windows RAC 删除失败节点,添加节点实例操作文档

平台介绍: (OS:Windows server 2004, Oracle :10.2.0.4.0 ) 实施步骤: (1)重新安装rac2的操作系统 (2)删除节点 (3)添加新节点 (4)配置新的节点 一.安装RAC2操作系统(步骤略). 二.删除节点: 2.1 Onrac1, or on any node that you are not deleting, run the following   command from CRS_home\bin crssetup del –nnnode_

第五十四课 树中节点的插入操作

问题: 新插入节点的位置如何指定? 非线性结构无法通过下标指定位置. 插入操作代码流程: 当前的树是一棵空树的话,新节点就当做空节点来插入.不是空树就查找新节点的父节点. 在GTree.h中添加插入操作: 1 #ifndef GTREE_H 2 #define GTREE_H 3 4 #include "Tree.h" 5 #include "GTreeNode.h" 6 #include "Exception.h" 7 8 namespace

第六十四课 二叉树中结点的删除与清除

BTree.h中添加删除操作: 1 #ifndef BTREE_H 2 #define BTREE_H 3 4 #include "Tree.h" 5 #include "BTreeNode.h" 6 #include "Exception.h" 7 #include "LinkQueue.h" 8 9 namespace DTLib 10 { 11 12 template < typename T > 13 cl

delphi TreeView 从数据库添加节点的四种方法

方法一:delphi中递归算法构建treeView 过程:通过读取数据库中table1的数据,来构建一颗树.table1有两个字段:ID,preID,即当前结点标志和父结点标志.所以整个树的表示为父母表示法.本递归算法不难写,但是要注意:程序内部的变量都应使用局部变量!比如当Query是外部变量(函数外定义或者直接通过控件拖拽得来)时就会得到错误的结果.代码如下: unit Unit1; interface uses  Windows, Messages, SysUtils, Variants,

「mac」释放 macOS 菜单栏潜能的软件们(十四款) 19.3.13 删除一款

转至:持续文章更新列表,建议收藏 一款好的软件不但可以节约时间,更能让你体验系统的魅力. 想知道我的 Mac 菜单栏都有什么嘛?这是一篇简单的介绍 Mac 菜单栏工具的文章,共计 15 款,每一款点击都可以直达官网. 大多数软件都提供适用版本,建议先行试用在决定是否购买,如没有试用版可以回复你的问题询问详情! 只有最适合你的应用,才称得上是效率应用. 尝新者:尝试一切新鲜的事物 题图就是我的菜单栏啦! 要知道菜单栏堆积,的确就如同 iOS 上软件从不排序一样令人不快,无法快速找到想要的对应应用,