zoukankan      html  css  js  c++  java
  • JS 实现百度搜索功能

      今天我们来用JS实现百度搜索功能,下面上代码:

        HTML部分:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <!--百度iocn图标-->
            <link rel="shortcut icon" href="https://www.baidu.com/favicon.ico" type="image/x-icon"/>
            <title>百度一下,你就知道</title>
            <link rel="stylesheet" href="css/baidu.css" />
            <script src="js/H.js"></script>
        </head>
        <body onload="onloads(),randomBack()">
            <div class="box">
                <div class="box_log">
                    <div class="box_log_img">
                        <img src="img/superlogo_c4d7df0a003d3db9b65e9ef0fe6da1ec.png"/>
                    </div>
                </div>
                <div class="box_text">
                    <div class="box_text_content">
                        <input type="text" name="text" id="text" value="" autofocus="autofocus"/>
                        <input type="button" name="bdyx" id="btn" value="百度一下" />
                        <ul id="search">
                            <li class="li1" id="0" onclick="iptShow(this.id)"></li>
                            <li class="li1" id="1" onclick="iptShow(this.id)"></li>
                            <li class="li1" id="2" onclick="iptShow(this.id)"></li>
                            <li class="li1" id="3" onclick="iptShow(this.id)"></li>
                            <li class="li1" id="4" onclick="iptShow(this.id)"></li>
                            <li class="li1" id="5" onclick="iptShow(this.id)"></li>
                            <li class="li1" id="6" onclick="iptShow(this.id)"></li>
                            <li class="li1" id="7" onclick="iptShow(this.id)"></li>
                            <li class="li1" id="8" onclick="iptShow(this.id)"></li>
                            <li class="li1" id="9" onclick="iptShow(this.id)"></li>
                        </ul>
                    </div>
                </div>
            </div>
            
            
            <script type="text/javascript" src="js/index.js" ></script>
        </body>
    </html>

        CSS层叠样式部分:

    body{/*清除浏览器自带样式*/
        margin: 0;
        padding: 0;
        /*background-repeat: no-repeat;*/
        min- 1200px;
    }
    .box{/*最大的盒子*/
         100%;
        height: 100%;
        /*background: yellow;*/
        /*height: 636px;*/
    }
    .box_log{/*log盒子*/
         100%;
        height: 250px;
        text-align: center;
    }
    .box_log_img{
        margin:0 auto;
         300px;
        height: 150px;
    }
    .box_log img{
         300px;
        height: 150px;
        margin-top: 38px;
        margin-bottom: 19px;
    }
    .box_text{/*text搜索框盒子大小*/
         100%;
        height: 36px;
    }
    .box_text_content{
         640px;
        height: 36px;
        margin: 0 auto;
    }
    
    #text{  /*input框的样式*/
         540px;
        height: 36px;
        box-sizing: border-box;
        margin-top: 3px;
        text-indent: 4px;
        outline: none;
    }
    .log_img{/*input框中的小相机*/
        position: absolute;
        left: 62%;
        top: 35.5%;
    }
    #btn{  /*按钮的样式*/
         100px;
        height: 36px;
        background: #3385FF;
        border: 0px;
        letter-spacing: 1px;
        color: white;
        margin-left: -5px;
        font-size: 15px;
        box-sizing: border-box;
        transform: translateY(1.5px);
        box-sizing: border-box;
    }
    #btn:hover{  /*当按钮hover的样式*/
        cursor: pointer;
    }
    #search{   /*搜索框的样式*/
         540px;
        margin: 0;
        padding: 0;
        list-style: none;
        display: none;
        border: 1px solid #E3E5E4; 
    }
    #search li{  /*搜索框li的大小颜色*/
        line-height: 36px;
        background: white;
    }
    #search li:hover{  /*当li hover的样式*/
        background: #F0F0F0;
    }
    .li1{ /*li中的值缩进*/
        text-indent: 4px;
    }

        JS部分:

    var otext = document.getElementById("text");  //获取input框
    ose = document.querySelector("#search");  //通过类名选择器 选择到search框
    lis = document.getElementsByClassName("li1");  //获取所有的li
    otext.onkeyup = function(){   //当在input框中键盘弹起发生事件
        ose.style.display = otext.value?"block":"none";  /*三目运算符,如果otext.value的值部位空,则block。*/
        var osc = document.createElement("script");  /*创建一个script标签*/
        osc.src = "https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd="+otext.value+"&cb=houxiaowei";
        /*srcipt的src值引入百度的url,然后将otext文本框中输入的内容连接到url,在后面在运行自己的方法*/
        document.body.appendChild(osc);
        /*将创建好的script标签元素放入body中*/
        
        
        /*input框中按下回车根据input的值跳转页面*/
        if(event.keyCode==13){
            /*将百度作为连接,传入input的值,并跳入新的页面*/
            window.location.href = "https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd="+otext.value
        }
    }
    
    var count = 0;
    var search = 0;
    var arr = ose.children; /*获取ose下的所有li*/
    function houxiaowei(json){
        var jsonLength = 0;  /*json长度的初始值*/
    //                    console.log(json.s);
        for(var x in json.s){   /*将循环的次数变成json的长度*/
            jsonLength++;
        }
    //                    console.log(jsonLength);
        for(var i=0;i<lis.length;i++){
            if(jsonLength==0){  /*如果遍历出的长度等于0,li的值为空*/
                arr[i].innerHTML = null;   
            }else{
                if(json.s[i]!=null){/*如果json[i]的值不等于空,则将它的值放入li中*/
                    arr[i].innerHTML = json.s[i];
                }
            }
        }
        if(count==lis.length-1){
            count=0;
            search=0;
        }
        count++;
        search++;
    }
    
    /*单击li中的值显示在input框中*/
    function iptShow(thisId){
        otext.value = arr[thisId].innerHTML;
        window.location.href = "https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd="+otext.value
    }
    
    otext.onclick = function(e){
        ose.style.display = "block";
        var e = event || window.event;
        e.stopPropagation();    //阻止冒泡事件,除了IE8及以下不兼容,其他浏览器都兼容
        e.cancelBubble=true;  //阻止冒泡事件,IE8及以下兼容
    //                alert(e);
    }
    
    /*单击body中的任意地方隐藏li*/
    document.body.onclick = function(){
        ose.style.display = "none";
    }
    
    
    
    /*单击百度btn的时候触发,并跳到新的连接*/
    var btn = document.querySelector("#btn");
    cookies = []; 
    btn.onclick = function(){
        /*获取当前input的值*/
        var otext = document.getElementById("text").value;
        /*将百度作为连接,传入input的值,并跳入新的页面*/
        if(otext=="" || otext==null){
            window.location.href = "http://127.0.0.1:8020/%E7%99%BE%E5%BA%A6/%E7%99%BE%E5%BA%A6%E9%A6%96%E9%A1%B5.html?__hbt=1516599867084";
        }else{
            window.location.href = "https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd="+otext
        }
    }
    
    /*加载页面input为空*/
    function onloads(){
        var s = otext.value = null;
        $myId("text").focus();
    }
    
    function randomBack(){
        var randomBk = parseInt(Math.random()*545);
        document.body.style.background = "url(https://ss3.bdstatic.com/lPoZeXSm1A5BphGlnYG/skin/"+randomBk+".jpg?2)";
        document.body.style.backgroundSize = "100%";
    }‘“

      搜索功能的实现源于百度的 https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd="+otext.value+"&cb=houxiaowei,这个链接,其中”wd”的值为input框中需要搜索的值,它会返回一个json对象。&cb的值是一个方法或者是函数

    ,它用来将json中的值提取出来放入li中。

        今天就分享到这里~

    
    

      

  • 相关阅读:
    雪花算法解决的问题
    ServiceStack6000次限制破解
    电商 详情页面 nginx 配置 优先请求静态页,若没有请求动态页,同时生成静态页
    docker 使用汇总
    .net 5 新特性 -- EFCoreDBFirst 介绍 和 .NET5 AOP 5个Filter
    模板方法设计模式:定义抽象类-模板:定义业务流程,执行步骤--》各业务类继承抽象类,实现各自不同 具体的执行步骤
    通过代理模式(包一层),实现对业务增加功能如日志,异常处理,缓存结果,到达不破坏原有的业务代码,扩展了功能
    设计模式
    mongodb 基本操作(增删改查),事务,数据失效机制
    log4net.Config
  • 原文地址:https://www.cnblogs.com/houxiaowei/p/8398014.html
Copyright © 2011-2022 走看看