js案例-通讯录
HTML部分
从 bootcdn 上导入一个样式文件,然后根据这个样式文件来搭建页面结构。页面由一个 div 包裹,类名是 container,然后里面有一个 h1 类名是 center-align。h1 下面有一个 input 和 一个 ul,类名是 collection with-header。里面的 li 就是通讯录里的内容,标题 li 的类名是 collection-header,内容 li 的类名是 collection-item。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <link href="https://cdn.bootcdn.net/ajax/libs/materialize/1.0.0-rc.2/css/materialize.min.css" rel="stylesheet"> </head> <body> <div class="container"> <h1 class="center-align">我的通讯录</h1> <input type="text" id="ipt" placeholder="搜索姓名"> <ul id="names" class="collection with-header"> <!-- A --> <li class="collection-header"> <h5>A</h5> </li> <li class="collection-item"> <a href="#">A1</a> </li> <li class="collection-item"> <a href="#">A2</a> </li> <li class="collection-item"> <a href="#">A3</a> </li> <li class="collection-item"> <a href="#">A4</a> </li> <!-- B --> <li class="collection-header"> <h5>B</h5> </li> <li class="collection-item"> <a href="#">B1</a> </li> <li class="collection-item"> <a href="#">B2</a> </li> <li class="collection-item"> <a href="#">B3</a> </li> <li class="collection-item"> <a href="#">B4</a> </li> <!-- C --> <li class="collection-header"> <h5>C</h5> </li> <li class="collection-item"> <a href="#">C1</a> </li> <li class="collection-item"> <a href="#">C2</a> </li> <li class="collection-item"> <a href="#">C3</a> </li> <li class="collection-item"> <a href="#">C4</a> </li> </ul> </div> </body> <script src="./index.js"></script> </html>
JS部分
先获取 input,然后为 input 添加键盘抬起事件。在事件里先获取输入的内容,并且转成大写。然后获取 ul 和类名是 collection-item 的 li。循环这个 li,在里面获取每个 li 下面的 a。然后判断 输入的内容能否在 a 的内容里找到,如果找到将那个 li 显示,如果没找到就将那个 li 隐藏。
let ipt = document.querySelector('#ipt')
ipt.addEventListener('keyup', () => {
let iptVal = ipt.value.toUpperCase()
let ul = document.querySelector('#names')
let li = ul.querySelectorAll('li.collection-item')
for (let i = 0; i < li.length; i++) {
let a = li[i].children[0]
if (a.innerHTML.toUpperCase().indexOf(iptVal) != -1) {
li[i].style.display = 'block'
} else {
li[i].style.display = 'none'
}
}
})

浙公网安备 33010602011771号