百度搜索框项目

本文介绍了一种基于JavaScript的前端实现方案,用于输入框的关键词联想提示功能。通过监听输入框的keyup事件,根据用户输入的部分关键词,在下方实时显示匹配的完整关键词列表,提升用户体验。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
        .box{
            width: 200px;
            margin: 0;
            padding: 0;
        }

        .box input{
            margin: 0;
            padding: 0;
        }
    </style>
</head>
<body>

    <div class="box" id="box">
        <input type="input" id="inp">
    </div>

    <script src="common.js"></script>
    <script>
        var keyWords = ["小杨才是最帅的", "小刘才是最棒的", "小薛才是最好的", "小样也是不错的", "传智播客是最好的", "传说在传值有个很纯洁的小杨", "苹果好吃", "苹果此次召回还是没有中国"]

        my$('inp').onkeyup = function(){
            var text = this.value
            var tempArr = []

            if(my$('dv')){
                my$('box').removeChild(my$('dv'));
            }

            for(var i = 0 ; i < keyWords.length ; i++){
//                console.log(keyWords[i].indexOf(text) == 0)
                if(keyWords[i].indexOf(text) == 0){
                    tempArr.push(keyWords[i])
                }
            }
            console.log(tempArr)

            if(this.value.length == 0 || tempArr.length == 0){
                if(my$('dv')){
                    my$('box').removeChild(my$('dv'));
                }
                return
            }

            var dvObj  = document.createElement('div')
            console.log(dvObj)
            my$('box').appendChild(dvObj)
            dvObj.id = 'dv';
            dvObj.style.width = '200px';
            dvObj.style.height = '200px';
            dvObj.style.border = '1px solid #e60012;'

            for(var i = 0; i< tempArr.length; i++){
                var pObj = document.createElement('p')
                dvObj.appendChild(pObj)
                setInnerText(pObj, tempArr[i])
                pObj.style.margin = 0;
                pObj.style.padding = 0;
                pObj.style.cursor = 'pointer'
                pObj.style.marginTop = '5px';
                pObj.style.marginLeft = '5px'
                pObj.style.fontSize = '12px'
                //鼠标进入
                pObj.onmouseover = function(){
                    this.style.backgroundColor = 'yellow'
                }
                pObj.onmouseout = function(){
                    this.style.backgroundColor = 'white'
                }
            }
        }

        function setInnerText(element, text){
            if(typeof  element.textContent == "undefined"){
                element.innerText = text
            }else{
                element.textContent = text
            }
        }
    </script>
</body>
</html>

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值