• js实现百度,淘宝搜索功能


     
     
    Common.js
    //封装类名
    function byClassName(sClassName){
        if(document.getElementsBYClassName){
            return document.getElementsByClassName(sClassName);
        } else {
            var allTagsName = document.getElementsByTagName('*');
            var result = [];
            for(var i = 0; i<allTagsName.length;i++){
                if(allTagsName[i].className === sClassName){
                    result.push(allTagsName[i]);
                }
            }
            return result;
        }
    }
     
    index.js
    var oTxt = byClassName('txt')[0];
    var oBtn = byClassName('btn')[0];
    var oList = byClassName('list')[0];
    oTxt.onpropertychange = oTxt.oninput  = function(){
    //    先创建一个script标签,引入接口
        var oScript = document.createElement('script');
        oScript.src = 'https://suggest.taobao.com/sug?code=utf-8&q='+ this.value+'&_ksTS=1519875402602_594&callback=callback';
    //    将script标签添加到页面中
        document.body.appendChild(oScript);
    //    移除标签
        document.body.removeChild(oScript);
    }
    //创建回调函数接收数据
    function callback(data){
        oList.innerHTML = '';
        data.result.forEach( v => {
            var oLi = document.createElement('li');
            oLi.innerHTML = v;
            oList.appendChild(oLi);
            oLi.onclick = function(){
                oTxt.value = oLi.innerHTML;
                oList.innerHTML = '';
            }
        });
    }
    

      

    HTML(百度)
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>百度搜索</title>
        <style type="text/css">
            * {
                margin: 0;
                padding: 0;
                box-sizing: border-box;
            }
            form[name=search-form] {
                margin: 40px auto 0;
                 640px;
            }
            input[name='search-content'] {
                 600px;
                line-height: 30px;
                border:1px solid #ccc;
                vertical-align: bottom;
                outline: none;
            }
            input[name='search-btn'] {
                 40px;
                height: 32px;
                border: 1px solid #ccc;
                outline: none;
                cursor: pointer;
            }
            #list {
                list-style: none;
                margin: 0 auto;
                 640px;
            }
            #list li {
                padding: 10px 4px;
                border-bottom: 1px dashed #eee;
            }
        </style>
    </head>
    <body>
        <form action="javascript:;" name="search-form">
            <input type="text" name="search-content"><input type="submit" name="search-btn">
        </form>
        <ul id="list"></ul>
     
        <script>
     
            var oForm = document.forms['search-form'];
     
            var oContent = oForm.elements['search-content'];
     
            var oList = document.getElementById('list');
     
            // 定义回调函数
            function callback(data) {
                oList.innerHTML = '';
                data.s.forEach( v => {
                    var oLi = document.createElement('li');
                    oLi.innerHTML = v;
     
                    oList.appendChild(oLi);
                });
            }
            oContent.onpropertychange = oContent.oninput = function () {
                var oScript =document.createElement('script');
                oScript.src = 'https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=' + this.value + '&json=1&p=3&sid=1464_25548_21101_18559_17001_20719&req=2&csor=1&cb=callback';
     
                document.body.appendChild(oScript);
                document.body.removeChild(oScript);
            };
        </script>
    </body>
    </html>
    

      

    HTML(淘宝)
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8" />
    <title>跨域请求数据</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        ul li{
            list-style: none;
        }
        form{
             640px;
            margin: 30px auto 0;
            position: relative;
        }
        input{
            box-sizing: border-box;
            outline: none;
        }
        .txt{
             600px;
            line-height: 30px;
            vertical-align: bottom;
            border: 1px solid #ccc;
        }
        .btn{
             40px;
            height: 32px;
            border: 1px solid #ccc;
            cursor: pointer;
        }
        .list{
            position: absolute;
        }
        .list li{
             592px;
            padding: 10px 4px;
            cursor: pointer;
        }
        .list li:hover{
            background: #eee;
        }
    </style>
    </head>
    <body>
        <form action="javascript:;">
            <input class="txt" type="text" /><input class="btn" type="submit" />
        <ul class="list"></ul>
        </form>
        <script src="js/common.js"></script>
        <script src="js/index.js"></script>
    </body>
    </html>
     
    两者实现思路都是一样的,进入其对应的官方网站,在输入内容看,打开控制面板查看其请求的api接口,然后将api接口复制过来,通过创建回调接受,然后根据输入的文本框的内容进行动态li的创建,删除即可实现。
  • 相关阅读:
    新东西
    Xcode6新特性
    下载模拟器
    iOS定位和地图
    iOS,作死集锦
    ThreadLocal源码解析
    JSON Web令牌(JWT)介绍与使用
    docker已运行容器里的时区修改
    Docker图形界面管理
    ZooKeeper开机启动的俩种方式
  • 原文地址:https://www.cnblogs.com/bgwhite/p/9485286.html
Copyright © 2020-2023  润新知