zoukankan      html  css  js  c++  java
  • 借助baidu的jsonp接口,做一个自己的候选词组件

    先观察

    对接口进行提炼:https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=关键词&cb=回调函数

    简单测试一下:

    <!DOCTYPE html>
    <html>
    
    <head>
        <meta charset="utf-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title>百度候选词</title>
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <script>
            let test = (data) => {
                console.log(data);
            }
        </script>
        <script src="https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=dn&cb=test"></script>
    </head>
    
    <body>
        <!-- https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=关键词&cb=回调函数 -->
    </body>
    
    </html>
    

    效果:

    尝试把内容放入一个ul内:

    <!DOCTYPE html>
    <html>
    
    <head>
        <meta charset="utf-8" />
        <title>百度候选词</title>
    </head>
    
    <body>
        <ul id="myul"></ul>
        <script>
            // 为什么放ul的下面,可以看这篇文章:https://www.cnblogs.com/dotnetcrazy/p/10106976.html
            let test = (json) => {
                let ulobj = document.getElementById("myul");
                json.s.forEach(item => {
                    let liobj = document.createElement("li");
                    liobj.innerHTML = item;
                    ulobj.appendChild(liobj);
                });
            }
            // https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=关键词&cb=回调函数
        </script>
        <script src="https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=dn&cb=test"></script>
    </body>
    
    </html>
    

    效果:

    根据input输入动态获取

    <!DOCTYPE html>
    <html>
    
    <head>
        <meta charset="utf-8" />
        <title>百度候选词</title>
        <script>
            // https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=关键词&cb=回调函数
            let show_ul = (json) => {
                let ul_obj = document.getElementById("myul");
                ul_obj.innerHTML = ""; // 清空现在的ul
    
                console.log(json.s);
    
                json.s.forEach(item => {
                    let li_obj = document.createElement("li");
                    li_obj.innerHTML = item;
                    ul_obj.appendChild(li_obj);
                });
            }
            window.onload = () => {
                let input_obj = document.getElementById("myinput");
    
                input_obj.oninput = () => {
                    // 用script加载的方式,只会执行一次,不满足我们的需求,so ==> 动态创建
                    let script_obj = document.createElement("script");
                    script_obj.src = `https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=${encodeURIComponent(input_obj.value)}&cb=show_ul`
                    document.body.appendChild(script_obj); //添加到body里面
                }
            }
        </script>
    </head>
    
    <body>
        <input type="text" id="myinput" />
        <ul id="myul"></ul>
    </body>
    
    </html>
    

    效果:

    线上测试

    可行,下面就美化,然后放入自己项目的input中了

  • 相关阅读:
    linq to sql 还没解决的问题
    js暂停函数,想做牛人的菜鸟遇到了问题。
    公司给我拿800/月 干不干啊?ASP.NET程序员
    android の Handler消息传递机制
    android の Activity & View | LayoutInflate
    ActionScript事件侦听addEventListener的参数详解
    java中String的intern方法和equals方法的使用
    java中short,int转换成byte数组及byte数组转换成short,int
    Flex组件中list里面的数据引用
    Flex中设置弹出窗口的弹出效果(alpha值的渐变和scale值的渐变)
  • 原文地址:https://www.cnblogs.com/dotnetcrazy/p/10107236.html
Copyright © 2011-2022 走看看