JS模擬百度搜索框和選項(xiàng)卡的實(shí)現(xiàn)
練習(xí)1
實(shí)現(xiàn)搜索框內(nèi),輸入相關(guān)數(shù)字,在下方顯示相關(guān)內(nèi)容,模擬百度搜索,詳細(xì)代碼如下:
<!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>
<style>
.content {
width: 600px;
height: 500px;
margin: 0 auto;
}
.show {
display: none;
width: 200px;
height: 300px;
border: solid 1px black;
}
</style>
</head>
<body>
<div class="content">
<div class="serach">
<input type="text" id="val" placeholder="請輸入課程" style="width:200px; height:30px;">
<input type="submit" id="sub">
</div>
<div class="show" id="show"></div>
</div>
<script>
//以數(shù)組為例,可以連接數(shù)據(jù)庫,進(jìn)行查詢數(shù)據(jù)
let arr = ['web前端精英特訓(xùn)班 980元', 'HTML核心技術(shù) 199元', 'CSS核心技術(shù) 299元', 'Vue核心技術(shù) 599元',
'CSS+HTML核心技術(shù) 299元', 'web前端在線商城 99元', 'JavaScript核心技術(shù) 399元', 'JavaScript高級技術(shù) 899元'];
//先完成,展示區(qū)域的顯示與隱藏
let input = document.getElementById('val');
let show = document.getElementById('show');
input.onkeyup = function () {
//當(dāng)鍵盤抬起時(shí)觸發(fā)
show.style.display = 'block';
//input.value和arr的每一項(xiàng)進(jìn)行匹配 用indexOf():方法可返回某個(gè)指定的字符串值在字符串中首次出現(xiàn)的位置, 匹配到返回下標(biāo),匹配不到返回-1
let str = '';
arr.forEach((item) => {//forEach()中第一個(gè)元素item,代表數(shù)組中的元素,每一項(xiàng)
let res = item.indexOf(input.value);
if (res != -1) {
str += '<p>' + item + '</p>';
}
})
//判斷input.value為空或者str數(shù)組中沒有,給用戶一個(gè)提示
if (!input.value || !str) {
show.innerHTML = '<p>暫無結(jié)果</p>';
} else {
show.innerHTML = str;
}
}
input.onblur = function () {
//失去焦點(diǎn)隱藏
show.style.display = 'none';
input.value = '';
}
</script>
</body>
</html>結(jié)果:
點(diǎn)擊搜索框時(shí):


練習(xí)2,選項(xiàng)卡,詳細(xì)代碼如下:
<!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>
<style>
ul,
li {
margin: 0;
padding: 0;
list-style: none;
}
ul {
overflow: hidden;
}
li {
width: 100px;
height: 40px;
background-color: #ccc;
border: 1px solid #ccc;
float: left;
line-height: 40px;
/*設(shè)置行高等于height高度文字會垂直居中顯示*/
text-align: center;
}
div {
width: 406px;
height: 406px;
border: 1px solid #ccc;
}
img {
width: 406px;
height: 406px;
display: none;
}
</style>
</head>
<body>
<ul>
<li>大菊</li>
<li>英短</li>
<li>美短</li>
<li>布偶</li>
</ul>
<div>
<img src="images/15.jpg" alt="" style="display: block;">
<img src="images/16.jpg" alt="">
<img src="images/17.jpg" alt="">
<img src="images/18.jpg" alt="">
</div>
<script>
//1.移動到那個(gè)選項(xiàng)卡上邊,背景顏色要改變,對用的內(nèi)容區(qū)域要顯示
//移出時(shí)背景顏色恢復(fù),對應(yīng)內(nèi)容區(qū)域隱藏
let li = document.getElementsByTagName('li');
let img = document.getElementsByTagName('img');
for (let i = 0; i < li.length; i++) {
//先進(jìn)性元素?cái)?shù)組的下標(biāo)的設(shè)置 在js中獲取數(shù)組的下標(biāo)用 .index
li[i].index = i;
//移入時(shí)的屬性
li[i].onmousemove = function () {
li[i].style.backgroundColor = 'yellow';
//先把所有的圖片進(jìn)行隱藏,再讓對應(yīng)的圖片出現(xiàn)
for (let j = 0; j < img.length; j++) {
img[j].style.display = 'none';
}
img[this.index].style.display = 'block';
}
//移出時(shí)恢復(fù)原來的顏色
li[i].onmouseout = function () {
li[i].style.backgroundColor = '#eee';
}
}
</script>
</body>
</html>結(jié)果:

file:///C:/Users/DELL/Pictures/Screenshots/屏幕截圖(15).jpg
點(diǎn)擊第二個(gè)選項(xiàng)卡時(shí):

到此這篇關(guān)于JS模擬百度搜索框和選項(xiàng)卡的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)JS模擬百度搜索框和選項(xiàng)卡內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JS高級調(diào)試技巧:捕獲和分析 JavaScript Error詳解
前端工程師都知道 JavaScript 有基本的異常處理能力。我們可以 throw new Error(),瀏覽器也會在我們調(diào)用 API 出錯時(shí)拋出異常。但估計(jì)絕大多數(shù)前端工程師都沒考慮過收集這些異常信息2014-03-03
基于js?+?html2canvas實(shí)現(xiàn)網(wǎng)頁放大鏡功能
最近接到任務(wù),需實(shí)現(xiàn)【網(wǎng)頁】放大鏡的效果,百度搜索?【js?放大鏡】關(guān)鍵字,千篇一律的都是一些仿淘寶/京東等電商網(wǎng)站中查看規(guī)格大圖的效果實(shí)現(xiàn),根本無法滿足我的需求,于是自己花了點(diǎn)時(shí)間調(diào)研實(shí)現(xiàn),在這里分享給大家,感興趣的朋友可以參考下2023-12-12
javascript使用appendChild追加節(jié)點(diǎn)實(shí)例
這篇文章主要介紹了javascript使用appendChild追加節(jié)點(diǎn)的方法,實(shí)例分析了appendChild()函數(shù)增加結(jié)點(diǎn)的使用技巧,需要的朋友可以參考下2015-01-01
JavaScript數(shù)組扁平轉(zhuǎn)樹形結(jié)構(gòu)數(shù)據(jù)(Tree)的實(shí)現(xiàn)
本文主要介紹了JavaScript數(shù)組扁平轉(zhuǎn)樹形結(jié)構(gòu)數(shù)據(jù)(Tree)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
一文詳解Javascript內(nèi)存機(jī)制與垃圾回收
這篇文章主要給大家詳細(xì)介紹了Javascript的內(nèi)存機(jī)制與垃圾回收,文中又詳細(xì)的代碼示例,對我們學(xué)習(xí)Javascript有一定的幫助,需要的同學(xué)可以借鑒閱讀2023-06-06
微信小程序使用第三方庫Immutable.js實(shí)例詳解
Immutable 是 Facebook 開發(fā)的不可變數(shù)據(jù)集合。不可變數(shù)據(jù)一旦創(chuàng)建就不能被修改,是的應(yīng)用開發(fā)更簡單,允許使用函數(shù)式編程技術(shù),比如惰性評估。微信小程序無法直接使用Immutable.js,下面就來說說微信小程序如何使用第三方庫Immutable.js。2016-09-09
Javascript 一些需要注意的細(xì)節(jié)(必看篇)
下面小編就為大家?guī)硪黄狫avascript 一些需要注意的細(xì)節(jié)(必看篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07

