运行效果
代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
*{
margin: 0;
padding: 0;
box-sizing: border-box;
}
.content{
position: relative;
width: 400px;
margin: 0 auto;
}
.show{
position: absolute;
left: 0;
top: 50px;
display: none;
width: 300px;
height: 200px;
border: 1px solid #000;
border-top: 0;
}
</style>
</head>
<body>
<div class="content">
<div class="search">
<input type="text" id="val" placeholder="请输入课程" style="width: 300px; height: 50px;">
<input type="submit" id="sub" style="height: 50px;width: 50px;">
</div>
<div class="show"></div>
</div>
<script>
let arr = ['web前端精英特训班 980元','HTML核心技术 199元','CSS核心技术 299元','Vue核心技术 599元','CSS+HTML核心技术 299元','web前端在线商城 99元','JavaScript核心技术 399元','JavaScript高级技术 899元']
// 1.按键弹起,下方栏要出现
const txt = document.getElementById('val')
const show = document.querySelector('.show')
txt.addEventListener('keyup',function(){
show.style.display = 'block'
// 3.输入的文本和数组中的数据相匹配,把匹配的元素显示出来
let str = ''
arr.forEach((item)=>{
let res = item.indexOf(txt.value)
if(res !== -1){
str += '<p>'+item+'</p>'
}
})
// 显示之前做判断
// 如果输入的内容为空或输入的内容没有匹配的上的,应给有相应的提示
if(!txt.value || !str){
show.innerHTML = '<p>暂无结果</p>'
}else{
show.innerHTML = str
}
})
// 2.失去焦点的时候,下方栏消失
txt.addEventListener('blur',function(){
show.style.display = 'none'
txt.value = ''
})
</script>
</body>
</html>