您好,登錄后才能下訂單哦!
小編給大家分享一下JS如何實(shí)現(xiàn)搜索關(guān)鍵詞的智能提示功能,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
1、能夠嵌入動(dòng)態(tài)文本于HTML頁面。2、對(duì)瀏覽器事件做出響應(yīng)。3、讀寫HTML元素。4、在數(shù)據(jù)被提交到服務(wù)器之前驗(yàn)證數(shù)據(jù)。5、檢測(cè)訪客的瀏覽器信息。6、控制cookies,包括創(chuàng)建和修改等。7、基于Node.js技術(shù)進(jìn)行服務(wù)器端編程。
最近在百度搜索的時(shí)候,當(dāng)你輸入一個(gè)字或者詞的時(shí)候,他會(huì)給你們彈出一個(gè)下拉框出來,里面是和你相關(guān)的搜索提示
比如 我輸入楊字,他會(huì)給我提示以下搜索提示
我嘗試著用JavaScript做了一個(gè)類似的練習(xí),以下是我用VS2013寫的代碼,有不對(duì)的地方,請(qǐng)不吝賜教。
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> <script type="text/javascript"> onload = function () { function handle() { var keyWords = { "楊忠科": ["楊忠科的視頻", "楊忠科的微博", "楊忠科的郵箱"], "楊": ["楊利偉", "楊振宇", "楊過"], "楊忠": ["楊忠科", "楊忠學(xué)", "楊忠愛國(guó)"], "楊忠科愛":["楊忠科愛祖國(guó)","楊忠科愛首都","楊忠科愛學(xué)習(xí)"] }; if (keyWords[this.value]) { //判斷body中是否有這個(gè)層,如果有就刪掉了 if (document.getElementById('dv')) { document.body.removeChild(document.getElementById('dv')); } //開始創(chuàng)建層 var dvObj = document.createElement('div'); dvObj.id = 'dv'; dvObj.style.width = '300px'; //dvObj.style.height = '200px'; //將來可以不要 dvObj.style.border = '1px solid red'; document.body.appendChild(dvObj); //脫離文檔流 dvObj.style.position = 'absolute'; dvObj.style.left = this.offsetLeft + 'px'; dvObj.style.top = this.offsetHeight + this.offsetTop + 'px'; //循環(huán)創(chuàng)建 for (var i = 0; i < keyWords[this.value].length; i++) { //創(chuàng)建一個(gè)可以存文本的標(biāo)簽 var pObj = document.createElement('p'); pObj.innerText = keyWords[this.value][i]; //p標(biāo)簽要有小手,還有高亮顯示 pObj.style.cursor = 'pointer'; pObj.style.margin = '5px'; pObj.onmouseover = function () { this.style.backgroundColor = 'red'; }; pObj.onmouseout = function () { this.style.backgroundColor = ''; } dvObj.appendChild(pObj); //把p標(biāo)簽加到層中 } //創(chuàng)建可以顯示文件的標(biāo)簽 } } //firefox下檢測(cè)狀態(tài)改變只能用oninput,且需要用addEventListener來注冊(cè)事件。 if (/msie/i.test(navigator.userAgent)) //ie瀏覽器 { document.getElementById('txt').onpropertychange = handle } else {//非ie瀏覽器,比如Firefox document.getElementById('txt').addEventListener("input", handle, false); } }; </script> </head> <body> <span id="msg"></span> 請(qǐng)輸入搜索關(guān)鍵字<input type="text" name="name" value="" id="txt"/>百度一下 </body> </html>
效果展示:
關(guān)于這個(gè)練習(xí)我有以下幾點(diǎn)思索
1.因?yàn)樗阉鳠嵩~提前被設(shè)定好,放在鍵值對(duì)里面,所以搜索的范圍也就被限定了,這個(gè)可以再被加深,和數(shù)據(jù)庫(kù)中的數(shù)據(jù)連接起來,搜索的的關(guān)鍵詞直接從數(shù)據(jù)庫(kù)中查詢,這個(gè)具體怎么寫我還沒研究透,希望有經(jīng)驗(yàn)的前輩可以指教。
2.關(guān)于這個(gè)代碼的應(yīng)用我覺得可以應(yīng)用在用戶查詢搜索上,百度搜索就是一個(gè)很好的實(shí)例
3.代碼畢竟是JS寫的,如果用戶的電腦將JS控件阻止了,效果也就不行了。
看完了這篇文章,相信你對(duì)“JS如何實(shí)現(xiàn)搜索關(guān)鍵詞的智能提示功能”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。