在很多需要搜尋的網站, 都會有一個自動完成的搜尋框. 方便用戶查找他們想要的搜尋字詞. 幫助用戶快速找到自己想要的結果. 這種方式是比較友好的. 所以是比較提倡使用的.
我們這次就來實現這一效果. 我們透過兩篇文章來進行講解. 首先我們來完成介面的設計佈局.
介面的HTML結構, 第一個少不了的是一個搜尋框, 第二個就是搜尋的點擊按鈕.
<div class="search"> <input type="text" value=""> <button>搜索</button> </div>
這就是最簡單的搜尋框的設計. 那CSS程式碼怎麼處理. 以前用得多的是使用float來進行處理, 然後給搜尋框一個邊框,設定一個padding. 然後給按鈕去除邊框,設定一個背景. 這裡我們使用flex佈局方式. 這樣更簡單點. 不用考慮清除浮動效果.當然這裡就要考慮兼容性問題了.
.search { display: inline-flex; height: 35px; margin: 50px auto; position: relative; } .search input { border: #eee 1px solid; background-color: #fff; outline: none; width: 200px; padding: 0 5px; } .search button { background-color: #ff3300; color: #fff; border: none; width: 80px; }
這時候我們繼續往下考慮, 如果用戶輸入了關鍵字, 那就得顯示一個列表的相關詞語. 那這時候我們需要加入一個詞語列表.
如
<ul> <li><a href="#">武林外传</a> </li> <li><a href="#">葵花宝典</a> </li> <li><a href="#">如来佛掌</a> </li> <li><a href="#">九阴白骨爪</a> </li> </ul>
我們將這行程式碼追加到.search的內容後面.然後設定CSS程式碼, 我們設定他的最小寬度為.search寬度減去搜尋按鈕的寬度.這樣就跟搜尋框一樣寬.
.search ul { position: absolute; left: 0; top: 35px; border: #eee 1px solid; min-width: calc(100% - 80px); text-align: left; } .search ul a { display: block; padding: 5px; }
這得在CSS程式碼之前, 將預設的一些瀏覽器樣式清除.最後效果如下.
好了.下面我們完成JS的程式碼控制.
我們來分析下, 其中的事件. 使用者在輸入框輸入文字後, 將輸入的文字與後台資料做查詢, 查詢到後傳回給客戶端, 然後將傳回的資料顯示在資料清單下.
根據這個步驟, 我們首先是取得輸入框標籤, 給這個標籤加上onkeyup事件
var ele_key = document.getElementById("key"); ele_key.onkeyup = function (e) { //处理事件 }
這裡我們模擬一個後台資料, 這裡用資料來表示,然後加入一些資料
var data = ["编程的人", "武林外传", "葵花宝典", "九阴白骨爪", "武林江湖", "will"];
後台資料有了, 事件也添加了. 這時候我們對資料進行處理了.
首先是取得用輸入的資料, 來然後與後台資料比較. 然後將比較後的資料保存在一個資料裡面.
//定义一些数据 var data = ["编程的人", "武林外传", "葵花宝典", "九阴白骨爪", "武林江湖", "will"]; var ele_key = document.getElementById("key"); ele_key.onkeyup = function (e) { var val = this.value; //获取输入框里匹配的数据 var srdata = []; for (var i = 0; i < data.length; i++) { console.log(data[i].indexOf(val)) if (val.trim().length > 0 && data[i].indexOf(val) > -1) { srdata.push(data[i]); } } }
繼續往下分析, 目前我們取得到後台查詢到的資料後, 那就得將這個資料顯示給使用者查看, 這裡我們顯示在資料清單中.
//定义一些数据 var data = ["编程的人", "武林外传", "葵花宝典", "九阴白骨爪", "武林江湖", "will"]; var ele_key = document.getElementById("key"); ele_key.onkeyup = function (e) { var val = this.value; //获取输入框里匹配的数据 var srdata = []; for (var i = 0; i < data.length; i++) { console.log(data[i].indexOf(val)) if (val.trim().length > 0 && data[i].indexOf(val) > -1) { srdata.push(data[i]); } } //获取到的数据准备追加显示, 前期要做的事情: 清空数据,然后显示数据列表,如果获取到的数据为空,则不显示 var ele_datalist = document.getElementById("datalist"); ele_datalist.style.visibility = "visible"; ele_datalist.innerHTML = ""; if (srdata.length == 0) { ele_datalist.style.visibility = "hidden"; } //将搜索到的数据追加到显示数据列表, 然后每一行加入点击事件, 点击后将数据放入搜索框内, 数据列表隐藏 var self = this; for (var i = 0; i < srdata.length; i++) { var ele_li = document.createElement("li"); var ele_a = document.createElement("a"); ele_a.setAttribute("href", "javascript:;"); ele_a.textContent = srdata[i]; ele_a.onclick = function () { self.value = this.textContent; ele_datalist.style.visibility = "hidden"; } ele_li.appendChild(ele_a); ele_datalist.appendChild(ele_li); } }
在新增資料到清單中時, 我們首先對資料清單做初始化處理,避免重複資料的新增. 其次是我們在資料清單的每一行中新增了一個點擊事件,點擊後將資料放入搜尋框內, 資料列表隱藏.
在這裡整個自動完成的搜尋框就完成了.我們來測試下效果.
這裡可能是錄製軟體問題, 邊框與它錄製的背景顏色應該一樣了. 邊框不見了(⊙﹏⊙)b
以上就是JAVASCRIPT實現搜尋框的自動完成效果,大家可以自己測試玩玩!

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

Atom編輯器mac版下載
最受歡迎的的開源編輯器

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)