js实现百度搜索框提示(跨域)

效果图如下:
在这里插入图片描述
html部分:

<input type="text" id="inp"><button>搜索</button>
    <ul id="oul"></ul>

css部分:

<style>
    * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
    }

    input {
        width: 300px;
        height: 40px;
        margin-left: 550px;
        margin-top: 100px;
    }

    button {
        width: 100px;
        height: 45px;
    }

    ul {
        margin-left: 550px;
        width: 300px;
        box-shadow: 0px 0px 5px #ccc;
        list-style: none;
        border: 1px solid #ccc;
        border-top: 0px;
        padding: 5px;
    }
</style>

js部分:

<script>

    //url为百度接口,wd后面拼上要搜索的内容。
    var url = 'https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=';
    var oul = document.getElementById('oul');
    var inp = document.getElementById('inp');
    
    //oninput事件,input内value发生改变时触发,事件触发的第一步是先清除上一个script。
    inp.oninput = function () {
        var ourl = url + inp.value + '&cb=fn';
        del();
    //input内无值时,页面无内容。有值的时候发送请求。
        if (this.value != '') {
            var jsonp = document.createElement('script');
            jsonp.src = ourl;
            document.body.appendChild(jsonp);
        } else {
            oul.innerHTML = ' ';
        }
    }

    function fn(data) {
    //接收的数据显示之前清除上一次显示的内容。
        oul.innerHTML = ' ';
        for (var i = 0; i < data.s.length; i++) {
            var oli = document.createElement('li');
            oli.innerHTML = data.s[i];
            //为每一项添加点击事件,点击时将点击的内容显示到input中。
            oli.onclick = function () {
                inp.value = this.innerHTML;
            }
            oul.appendChild(oli);
        }
    };

    function del() {
        var scr = document.querySelectorAll('script');
        if (scr.length === 0) {
            return;
        }
        document.body.removeChild(scr[scr.length - 1]);
    }
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值