zoukankan      html  css  js  c++  java
  • JavaScript搜索框项目

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            #box {
                width: 450px;
                margin: 200px auto;
            }
    
            #txt {
                width: 350px;
            }
    
            #pop {
                width: 350px;
                border: 1px solid red;
            }
    
            #pop ul {
                margin: 10px;
                padding: 0px;
                width: 200px;
                list-style-type: none;
    
            }
    
            #pop ul li {
    
            }
        </style>
    </head>
    <body>
    
    <div id="box">
        <input type="text" id="txt" value=""/>
        <input type="button" value="搜索" id="btn"/>
    
    </div>
    
    <script src="common.js"></script>
    <script>
        var keyWords = ["小杨才是最纯洁的", "小杨才是最帅的", "小段是最猥琐的", "小超是最龌龊的", "传智播客是一个培训机构", "传说在传智有个很帅很纯洁的小杨", "苹果好吃", "苹果此次召回还是没有中国"];
        //获取文本框注册键盘抬起事件
        my$("txt").onkeyup = function () {
    
            //每一次键盘抬起都判断页面有没有这个div
            if(my$("dv")) {
                //如果存在先删除
                my$("box").removeChild(my$("dv"));
            }
            //获取文本框输入的内容
            var text = this.value;
            var tempArr = [];//临时数组----->空数组
            //把文本框输入的内容和数组中的每个数据对比
            for(var i = 0; i < keyWords.length; i++) {
                if(keyWords[i].indexOf(text) == 0) {
                    tempArr.push(keyWords[i]);//追加
                }
            }
            //如果文本框是空的,或者临时数组是空的不用创建div
            if(this.value.length == 0 || tempArr.length == 0) {
                //如果页面中有这个div,则删除
                if(my$("dv")) {
                    my$("box").removeChild(my$("dv"));
                }
                return;
            }
            //创建div,把div加入id为box的div中
            var dvObj = document.createElement("div");
            my$("box").appendChild(dvObj);
            dvObj.id = "dv";
            dvObj.style.width = "350px";
            dvObj.style.border = "1px solid #ccc";
            //循环遍历临时数组,创建对应的p标签
            for(var i = 0; i < tempArr.length; i ++) {
                //创建p标签
                var pObj = document.createElement("p");
                //把p添加到div中
                dvObj.appendChild(pObj);
                setInnerText(pObj, tempArr[i]);
                pObj.style.margin = 0;
                pObj.style.padding = 0;
                pObj.style.cursor = "pointer";
                pObj.style.marginTop = "2px";
                pObj.style.marginLeft = "5px";
                //鼠标进入
                pObj.onmouseover = function () {
                  this.style.backgroundColor = "yellow";
                };
                //鼠标离开
                pObj.onmouseout = function () {
                  this.style.backgroundColor = "";
                };
            }
        };
    </script>
    
    </body>
    </html>

    common.js代码:

    /**
     * Created by Administrator on 2018/7/22.
     */
    function my$(id) {
        return document.getElementById(id);
    }
    //设置任意的标签中间的文本内容
    function setInnerText(element, text) {
        //判断浏览器是否支持该属性
        if (typeof element.textContent == "undefined") {
            element.innerText = text;
        } else {
            element.textContent = text;
        }
    }
    //获取任意标签中间的文本内容
    function getInnerText(element) {
        if (typeof element.textContent == "undefined") {
            return element.innerText;
        } else {
            return element.textContent;
        }
    }
    //获取任意一个父级元素的第一个子级元素
    function getFirstElementChild(element) {
        if (element.firstElementChild) {//true 支持
            return element.firstElementChild;
        } else {
            var node = element.firstChild;//第一个子节点
            while (node && node.nodeType != 1) {
                node = node.nextSibling;
            }
            return node;
        }
    }
    
    //获取任意一个父级元素的最后一个子级元素
    function getLastElementChild(element) {
        if (element.lastElementChild) {
            return element.lastElementChild;
        } else {
            var node = element.lastChild;
            while (node && node.nodeType != 1) {
                node = node.previousSibling;
            }
            return node;
        }
    }
    
    //为任意元素绑定任意事件
    //参数1:任意元素
    //参数2:事件类型
    //参数3:事件处理函数
    function addEventListner (element, type, fn) {
        //判断浏览器是否支持该方法
        if(element.addEventListener) {
            element.addEventListener(type,fn, false);
        }else if(element.attachEvent) {
            element.attachEvent("on" + type, fn);
        }else {
            element["on"+type] = fn;
        }
    }
  • 相关阅读:
    Java 自动装箱与拆箱(Autoboxing and unboxing)【转】
    工厂方法和new
    java线程池【转】
    大型网站架构演化过程
    jsp el表达式
    GC垃圾回收
    mysql语句
    String StringBuilder StringBuffer
    粉丝关注数据库表的设计
    ECharts图表之柱状折线混合图
  • 原文地址:https://www.cnblogs.com/cuilichao/p/9393328.html
Copyright © 2011-2022 走看看