JS——模拟百度搜索

注意事项:

1、for循环移除子节点时,其长度是变化的

2、在文档流中,input、img、p等标签与其他标签有3px的距离,利用左浮动,可以消除3px距离

3、背景图片定位时,第一个值是x轴方向的值,第二值是y轴方向的值

4、大多时候input标签outline属性时都设置为none,然后为其注册事件改变它的border颜色

5、indexOf方法返回符合条件的字符串的索引值,没有符合条件的情况下返回-1

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        .box1 {
            width: 500px;
            height: 36px;
            margin: 0 auto;
            margin-top: 50px;
            position: relative;
        }

        input[type="text"] {
            float: left;
            width: 355px;
            height: 34px;
            padding-left: 5px;
            padding-right: 40px;
            border: 1px solid #b8b8b8;
            border-right: 0px;
            /*text-indent: 1em;*/
            outline: none;
        }

        span {
            position: absolute;
            width: 18px;
            height: 16px;
            top: 50%;
            margin-top: -8px;
            right: 106px;
            background: url("image/baidu.png");
        }

        span:hover {
            cursor: pointer;
            background-position: 0 -20px;
        }

        button {
            float: left;
            width: 99px;
            height: 36px;
            background-color: #38f;
            border: 1px solid #38f;
            outline: none;

        }

        button:hover {
            background-color: #317ef3;
            cursor: pointer;
            box-shadow: 1px 1px 1px #ccc;
        }

        ul {
            list-style: none;
            width: 399px;
            background-color: pink;
            border: 1px solid #b8b8b8;
            border-top: none;
        }

        li {
            padding-left: 5px;
        }

        li:hover {
            background-color: #b8b8b8;
        }
    </style>
</head>
<body>
<div class="box1">
    <input type="text">
    <span></span>
    <button>搜索</button>
    <ul>

    </ul>
</div>
</body>
<script>
    var arr = ["a", "ab", "abc", "abcd", "abcde", "abcdef"];
    var inpEle = document.getElementsByTagName("input")[0];
    var ulEle = document.getElementsByTagName("ul")[0];
    //input获得焦点后改变border颜色并且搜索相关词汇
    inpEle.onfocus = function () {
        this.style.borderTop = "1px solid #38f";
        this.style.borderLeft = "1px solid #38f";
        this.style.borderBottom = "1px solid #38f";
        searchWords();
    }
    //input离开焦点后改变border颜色并且搜索相关词汇
    inpEle.onblur = function () {
        this.style.borderTop = "1px solid #b8b8b8";
        this.style.borderLeft = "1px solid #b8b8b8";
        this.style.borderBottom = "1px solid #b8b8b8";
        for (var i = 0; i < ulEle.children.length;) {
            ulEle.removeChild(ulEle.children[i]);
        }
    }
    //input注册键盘弹起事件
    inpEle.onkeyup = searchWords;
    //搜索关联词汇
    function searchWords() {
        if (inpEle.value == "") {
            for (var i = 0; i < ulEle.children.length;) {
                ulEle.removeChild(ulEle.children[i]);
            }
            return;
        }
        //ulEle移除其子节点时,它的长度是变化的
        for (var i = 0; i < ulEle.children.length;) {
            ulEle.removeChild(ulEle.children[i]);
        }
        for (var i = 0; i < arr.length; i++) {
            if (arr[i].indexOf(inpEle.value) === 0) {
                var liEle = document.createElement("li");
                liEle.innerHTML = arr[i];
                ulEle.appendChild(liEle);
            }
        }
    }
</script>
</html>

时间: 2024-11-05 13:41:47

JS——模拟百度搜索的相关文章

原生JS模拟百度搜索框

近期有个新入行的小伙伴一直在问一些基础知识,突然觉得人的记忆力有限,有些平常很少用到的知识点虽简单却也其实很容易模糊,或者是一个单词,或者是一个语法.所以想着应该利用一下工作之余的碎片时间,记录一些工作上的问题和一些有趣的小案例,于是开通了播客,一方面便于自己日后翻阅,一方面给刚学习的小伙伴一个参考. 今天先写一个简单的小案例:原生JS模拟百度搜索框. 需求: 1.当在输入框输入时,每输入一个文字,就会在下方展示相关内容列表 2.每一次输入框输入,清空上一次内容 3.鼠标移入列表内容时,对应的内

原生JS模拟百度搜索关键字与跳转

<style type="text/css"> *{ margin: 0; padding: 0; } #text{ width: 300px; height: 30px; } ul { width: 302px; border: 1px solid #ddd; border-top:0; display: none; } ul li { list-style: none; font-size: 12px; font-family: "微软雅黑"; he

模拟百度搜索框

在使用百度搜索是,页面会根据我们输入的内容自动匹配一些候选内容. 实现的主要过程主要是: 1.用户在输入一个字符结束后,在onkeyup事件中获取用户输入的内容. 2.根据获取到的内容向服务器发送请求,匹配到相似的数据,存到数组中. 3.判断数组是否有内容,如果有数据,就在搜索框下面遍历匹配到的内容(候选项). 首先,要写好页面布局 html部分 <html> <head> <meta http-equiv="Content-Type" content=&

模拟百度搜索代码

模拟百度搜索“2012世界末日”网页地震撕裂效果,本效果是模仿用户在百度输入“2012世界末日”后点击搜索后出来的网页效果,网页在震动,像是地震了,而后开始撕裂,然后显示出相关的文字说明,很酷的效果,希望大家可以学习借鉴. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"

模拟百度搜索“2012世界末日”网页地震撕裂效果

模拟百度搜索“2012世界末日”网页地震撕裂效果,本效果是模仿用户在百度输入“2012世界末日”后点击搜索后出来的网页效果,网页在震动,像是地震了,而后开始撕裂,然后显示出相关的文字说明,很酷的效果,希望大家可以学习借鉴. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"

模拟百度搜索框,输入时显示历史记录

今天写了个小demo,利用本地存储的特点,模拟百度搜索框. 主要知识是利用本地存储的特点,模拟百度搜索时的历史记录显示. 主要HTML代码为 <div class="search"> <input type="text"/> <button class="btn">搜索</button> </div> <ul class="hidden"> <li&

小练习:用jQuery简单模拟百度搜索框的提示功能

今天第一次接触jQuery,用jQuery模拟了一下百度搜索的自动提示功能.连带jQuery的基本知识点,简单总结如下: 首先得在工程中导入插件:jquery-1.4.2.js ,并在html的head中引入该js: 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2 <html>

AJAX实现分页--模拟百度搜索分页

第一部分:效果与分析 1.百度分页组件: 2.自己实现的分页: 3.分析: 百度搜索分页,如果总页数大于10,用户最多只能看到10页内容,不足10页显示全部,当点击下一页时,数字页标向前移动一个单位,当点击上一页时向后移动一个单位. 第二部分:后台实现: 1.实现思路: 后台的处理思想是这样的,通过AJAX向后台发送请求,携带一个分页对象PageBean传过去,查询完毕后返回一个新的PageBean对象. 前台传入的PageBean对象参数: 属性 名称 是否必须 默认值 pageSize 每页

js搜索框 js仿百度搜索 js下拉框 jQuery.Autocomplete使用

做了一个网站,需要根据文本框的输入模糊搜索数据库内容给出提示供用户选择,就找到了jQuery.Autocomplete 效果如下图: 该插件托管在github上,具体地址:https://github.com/agarzola/jQueryAutocompletePlugin 官方的英文文档:http://api.jqueryui.com/autocomplete/ 在使用过程中遇到大坑跟大家说一下. 第一个是插件的数据源问题! 如果要使用服务器的数据源需要在调用autocomplete的时候传