js案例(一)百度搜索

 本案例模拟实现百度首页搜索的效果:当键盘抬起时,获取输入框数据,在arr中进行匹配,把匹配到的数据在show中显示。当失去焦点时,show的display重新设置为none,从而实现隐藏。

实现效果:

018fd013566b43359e2d163ea0638835.png

案例代码: 

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>js小案例</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        ul {
            list-style: none;
        }

        .search {
            width: 300px;
            margin: 0 auto;
        }

        .seach_input {
            width: 100%;
            border-color: blue;
        }

        .show {
            width: 100%;
            border-radius: 0 0 5px 5px;
            border: 1px solid blue;
            padding: 10px 0;
            display: none;
        }
    </style>
</head>

<body>
    <div class="search">
        <input type="text" placeholder="请输入问题" class="seach_input">
        <div class="show">
            <ul></ul>
        </div>
    </div>
</body>
<script>
    let arr = ['你好星期六',
        '你好星期六免费观看完整版高清',
        '你好 李焕英',
        '你好星期六2023最新一期免费观看',
        '你好的英文',
        '你好我的大夫电视剧免费观看',
        '你好星期六免费观看完整版2023',
        '你好李焕英电影在线观看免费高清国语',
        '你好我的大夫',
        '你好世界']

    //遍历arr中的每个元素,用indexOf方法判断输入的值input_value是否包含
    //在当前遍历的元素中。在的话,则创建li,把匹配的内容放入li,把li加入到ul中,
    //遍历结束后,把ul加入到show中。注意,每一次匹配前,都要把show的内容清空。
    function search(input_value) {
        show.innerText = '';
        let ul = document.createElement('ul');
        arr.forEach((item) => {
            if (input_value != '' & item.indexOf(input_value) != -1) {
                let li = document.createElement('li');
                li.innerText = item;
                ul.appendChild(li);
            }
        })
        show.appendChild(ul);

    }
    let input = document.querySelector('.seach_input');
    let show = document.querySelector('.show');

    //逻辑1 :当键盘抬起时,对输入内容进行匹配,将匹配结果加入.show这一div中,
    //并通过将display设置为block,让其显示。
    input.addEventListener('keyup', () => {
        console.log(input.value);
        search(input.value);
        show.style.display = 'block';
    })
    //逻辑2 :当失去焦点时,通过将display设置为none,让show这一div隐藏。
    input.addEventListener('blur', () => {
        show.style.display = 'none';
    })
</script>

</html>

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值