23任务二十一——

Posted cjlalala

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了23任务二十一——相关的知识,希望对你有一定的参考价值。

0、题目

  • 基于任务20,将任务20的代码进行抽象、封装,然后在此基础上实现如图中的两个需求:Tag输入和兴趣爱好输入
  • 如示例图上方,实现一个tag输入框
    • 要求遇到用户输入空格,逗号,回车时,都自动把当前输入的内容作为一个tag放在输入框下面。
    • Tag不能有重复的,遇到重复输入的Tag,自动忽视。
    • 每个Tag请做trim处理
    • 最多允许10个Tag,多于10个时,按照录入的先后顺序,把最前面的删掉
    • 当鼠标悬停在tag上时,tag前增加删除二字,点击tag可删除
  • 如示例图下方,实现一个兴趣爱好输入的功能
    • 通过一个Textarea进行兴趣爱好的输入,可以通过用回车,逗号(全角半角均可),顿号,空格(全角半角、Tab等均可)等符号作为间隔。
    • 当点击“确认兴趣爱好”的按钮时,将textarea中的输入按照你设定的间隔符,拆解成一个个的爱好,显示在textarea下方
    • 爱好不能重复,所以在下方呈现前,需要做一个去重
    • 每个爱好内容需要做trim处理
    • 最多允许10个兴趣爱好,多于10个时,按照录入的先后顺序,把最前面的删掉

1、解题过程

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>task18</title>
    <style>
    ul{
        list-style: none;
        height:300px;
    }
    textarea{
        margin-bottom:10px;
    }
    li{
        height:20px;
        display: inline-block;
        background-color: blue;
        color:white;
        margin:10px;
        padding:5px;
    }
    </style>
</head>

<body>
    Tag:<input type="text" id="tag">
    <ul id="tag-result">
    </ul>
    
    <textarea id="hobby" type="text" rows="5" cols="30"></textarea><br>
    <button id="test" >确认兴趣爱好</button>
    <div id="hobby-result">
    </div>


<script>
    var $=function(id){
      return document.getElementById(id);
    }
    var number=[];
    $("tag").onkeypress=function(e){
        var key;
        if(window.event) key=e.keyCode;
        else if(e.which) key=e.which;
        switch(key){
            case 13:case 32:case 10:case 44:{    //判断输入的是否是空格、回车、逗号
                var input=$("tag").value,    
                    content=input.split(/[\s\n\r\,\,]/);   //去掉输入的空格、回车、逗号
                for(var i=0;i<content.length;i++){
                    if(content[i]==""||typeof(content[i])=="undefined"){content.splice(i,1);
                    i--;
                    }
                }
                var num=[];            //去掉重复的tag
                for(var i=0;i<content.length;i++){
                    for(var j=i+1;j<content.length;j++){
                        if(content[i]===content[j]) content.splice(j,1);

                    }
                     num.push(content[i]);
                }
                number=num;
                //number中只能有10个tag
                if(number.length>10){
                    number.splice(0,number.length-10);
                }
                show();
            }
                
        }
    }
    //鼠标在tag上
    function over(target){
        var cont=target.innerHTML;
        target.innerHTML="删除"+cont;
    }
    //鼠标离开tag
    function out(target){
        var cont=target.innerHTML;
        target.innerHTML=cont.slice(2);
    }
    //被点击的tag被删除
    $("tag-result").addEventListener(click,function(e){
        var target=e.target;
        if(target.nodeName!="LI") return;
          var tar=parseInt(target.getAttribute("id")); //得到被点击元素的id属性,之前id绑定的是元素在数组中的序号
        number.splice(tar,1); //删除被点击的元素,1代表只删除一个元素
        show();
        return number;

    })

     //将数据显示到id为result的列表中
    function show(){
        var detail=" ";
        for(var i=0;i<number.length;i++){
                detail+="<li onmouseover=‘over(this)‘ onmouseout=‘out(this)‘ id=‘"+i+"‘>"+number[i]+"</li>";
            }
        $("tag-result").innerHTML=detail;
    }



















    /*//给输出的结果添加事件委托,使点击的元素被删除
       $("-tag-result").addEventListener("click",function(e){
        var target=e.target;
        if(target.nodeName!="LI") return;
        var tar=parseInt(target.getAttribute("id")); //得到被点击元素的id属性,之前id绑定的是元素在数组中的序号
        number.splice(tar,1); //删除被点击的元素,1代表只删除一个元素
        show();
        return number;
    })
    //将得到的用户输入数据输出显示到id为result的列表中
    function show(){
        var detail=" ";
        for(var i=0;i<number.length;i++){
                detail+="<li id=‘"+i+"‘>"+number[i]+"</li>";
            }
        result.innerHTML=detail;
    }
    //把输入的字符串按照分隔符分割并存入数组中
    function cutString(){
        var value=$("input").value;
        var content=value.split(/[\s\n\r\,\,\、\t\ ]/);
        for(var i=0;i<content.length;i++){
            if(content[i]==""||typeof(content[i])=="undefined"){content.splice(i,1);
                i--;
            }
        }
        number=content;
    }
    $("test").onclick=function(){
        var hobby=$("hobby").value,
            detail=" ";
        for(var i=0;i<number.length;i++){
            if(number[i].match(hobby)!=null&&hobby!=""){
                detail+="<li id=‘"+i+"‘class=‘blue‘>"+number[i]+"</li>";
            }
            else detail+="<li id=‘"+i+"‘>"+number[i]+"</li>";
        }
        result.innerHTML=detail;
    }*/
</script>
</body>
</html>

 

以上是关于23任务二十一——的主要内容,如果未能解决你的问题,请参考以下文章

C1认证学习二十二十一二十二(CSS背景属性CSS文本属性)

C1认证学习二十二十一二十二(CSS背景属性CSS文本属性)

ElasticSearch实战(二十一)-任务管理

ElasticSearch实战(二十一)-任务管理

spring-boot-route(二十一)quartz实现动态定时任务

23种设计模式(二十一)——命令模式行为变化