美文网首页
百度搜索小案例

百度搜索小案例

作者: 小透明进击战 | 来源:发表于2019-06-08 18:52 被阅读0次
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            * {
                margin: 0;
                padding: 0;
            }
            #dv {
                width: 450px;
                margin: 200px auto;
            }
            #content {
                width: 300px;
            }
    
        </style>
    </head>
    <body>
    <div id="dv">
        <input type="text" id="content"/>
        <input type="button" value="搜索" id="search"/>
    </div>
    <script src="../common.js"></script>
    <script>
        var text=["1", "11","2","22", "232", "321", "1121", "22", "151"]
        my$("content").onkeyup=function(){
            //坑的解决方案就是:每次键盘抬起,第一步先检查是否存在newdiv的盒子,如果存在,就删除。
            if(my$("newdiv")){
                my$("dv").removeChild(my$("newdiv"));
            }
            //获取输入框文本值
            var txt=this.value;
            //将对比符合的值放入这个临时数组
            var newarray=[];
            for(var i=0;i<text.length;i++){
                if(text[i].indexOf(txt)==0){
                    newarray.push(text[i]);
                }
            }
            //创建div 但是要注意不要每次执行都创建div。要先删后创,但是要注意如果空的就不需要执行创建div的操作,也就是要return。
            //如果临时数组和txt值都为0,则不需要创建,也就是要删除
            if(newarray.length==0||txt.length==0){
                //页面中有div要删除。
                if(my$("newdiv")){
                    my$("dv").removeChild(my$("newdiv"));
                }
                return;
            }
            //创建div
            var divele=document.createElement("div");
            my$("dv").appendChild(divele);
            divele.style.width="350px";
            divele.style.border="1px dashed hotpink";
            divele.id="newdiv";
    
            //循环创建p标签
            for(var i=0;i<newarray.length;i++){
                var pele=document.createElement("p");
                divele.appendChild(pele);
                setInnerText(pele,newarray[i]);
                pele.style.margin="0";
                pele.style.padding="0";
                pele.style.marginLeft="5px";
                pele.style.marginTop="5px";
                pele.onmouseover=function(){
                    this.style.backgroundColor="hotpink";
                }
                pele.onmouseout=function(){
                    this.style.backgroundColor="";
                }
    
    
            }
    
        }
    
    
    </script>
    </body>
    </html>![微信图片_20190608185117.jpg](https://img.haomeiwen.com/i13694129/6698165cdaad8bfa.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    

    注意:
    1、第一个坑就是要先检查临时数组和输入框是否有字节再创建div。其中如果没有字节,就不需要执行下面创建div的语句,也就是if语句中要使用return,结束键盘抬起事件处理函数的往下执行。
    2、第二个坑就是如果有多次键盘抬起就会创建多次div。所以,我们每次执行键盘抬起事件时要首先检查是否存在div,如果存在就要删除。


    第二个坑.jpg

    3、上述所说的div是指新创建的div。newdiv。

    相关文章

      网友评论

          本文标题:百度搜索小案例

          本文链接:https://www.haomeiwen.com/subject/zqtwxctx.html