日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

在vue項目實現一個ctrl+f的搜索功能

瀏覽:250日期:2023-02-04 18:46:27

這次在項目中遇到了一個要做一個搜索功能,因為項目是vue的,而且是在手機端,所以對這個搜索功能的實現和能做到什么樣子都沒有底,在網上研究了一會,發現大家的解決方法都各有特色,有引入第三方包的,有遍歷的,確實都可以實現,但我覺得在vue中這樣的方法也太過繁瑣了,于是經過一段時間的查詢與思索后我自己寫了個簡單的方法,并記錄下自己思索的過程

在vue項目實現一個ctrl+f的搜索功能

第一步

明確尋求 產品的一萬種奇怪要求對于開發來說,應該要知道自己需要什么,不需要什么,理解pm的需求,把功能以最符合ue的樣子呈現出來,而這次的功能需求是非常簡單明了的,一個搜索框,底下是文章,搜索框輸入的時候動態標紅,按下回車會跳到標紅的位置,簡單明了

第二步

尋找靈感 百度救我

對于已經有過開發經驗的人來說,可能把自己以前的代碼拿去復用就可以解決問題,但對于我這種第一次開發的菜雞來說,對搜索功能的實現竟然毫無頭緒,這種在身邊隨處可見的功能,竟然沒有細想過具體的實現流程,幸好,現代人的視野就是搜索引擎的視野,去百度上轉了一圈之后,見到了各種各樣的方法,但他們都有一個共同點,太復雜了,復雜到我看到就有點不太想用,雖然我是那種雖然代碼能成功運行就等于沒問題的三流選手,但是看到太過復雜的代碼也很影響我一天的心情,所以我選擇了更為簡單的方法

第三步

進入開發 bug的無數種奇怪煉成方式首先我的代碼結構如下:

<template> <div> <div class='header'> //頁面頭部,搜索框部分 <div class='search-total'> <div class='search_model_zt'> <div class='search'> <div class='search_icon'><img :src='http://www.b3g6.com/bcjs/require(’img/search.png’)' /></div> <div class='search_input'><input v-model='searchitem' @keyup.enter='submit' placeholder='搜索條文' /></div> </div> </div> </div> </div> <div class='law-content'> //頁面內容部分,具體內容由后端傳入的datelist中的lawContent提供 <div v-if='datelist' v-html='changeColor(datelist.lawContent)'></div> </div> </div></template>

搜索內容把對應內容變為紅色的函數就是changeColor

changeColor(item) { let searchitem = this.searchitem; //獲取動態變化的搜索詞 if (searchitem !== ’’) { //若搜索詞不為空,對搜索詞進行替換 return item.replace(new RegExp(searchitem, ’g’), ’<a >’ + searchitem + ’</a>’); } else { return item; } },

到此,動態輸入標紅搜索詞的功能已經做好了,但是搜索框還有一個回車事件我覺得在實際上也應該有點用,比如跳到第一個關鍵詞什么的,這個時候,我又看見了一個神奇的方法

document.getElementsByTagName('a').scrollIntoView();

當頁面可以支持滑動時,scrollIntoView可以把對于元素滑倒頁面頂部(默認),也可以通過參數賦值給false讓對應元素賦值到底部,僅支持原生js,jQuery中沒有這個方法,那么問題來了,我上面替換出了那么多a標簽,怎么能讓他們排好隊一個一個被調用了,那當然只能遍歷了,但是原生js中沒有jQuery中eq那樣的選擇器,怎么才能讓js知道我要找的是第n個a標簽呢

submit(){ let num = document.getElementsByTagName('a').length; //獲取所有a標簽的數量,這個頁面所有的a標簽都是由查詢替換獲得的,所以a標簽的數量可以當場查詢到關鍵詞的數量 if(num != 0){ //如果查詢關鍵詞存在,跳到第一個關鍵詞的位置,標頭增1,走滿一圈歸0 document.getElementsByTagName('a')[this.searchhead].scrollIntoView(); //scrollIntoView方法只在原生document中可以使用,jquery中沒有這個方法,參數默認是true,將這個元素置于頁面第一行(如果頁面可以滑動函數才生效) if(this.searchhead < (num - 1)){ this.searchhead += 1; }else if(this.searchhead == (num - 1)){ this.searchhead = 0; } } },

原來,getElementsByTagName(“a”)返回的是帶有指定標簽名的對象的集合。通過對數組的序列的調用就可以完成對方法的依次調用。至此,這個簡單頁面的功能已基本實現,

源碼

<script src='http://www.b3g6.com/axios/axios.js'></script><template> <div> <div class='header'> <div class='search-total'> <div class='search_model_zt'> <div class='search'> <div class='search_icon'><img :src='http://www.b3g6.com/bcjs/require(’img/search.png’)' /></div> <div class='search_input'><input v-model='searchitem' @keyup.enter='submit' placeholder='搜索條文' /></div> </div> </div> </div> </div> <div class='law-content'> <div v-if='datelist' v-html='changeColor(datelist.lawContent)'></div> </div> </div></template><script> require(’../utils/js/jquery.min.js’); export default { data() { return { datelist: null, searchitem: ’’, searchnum:null, searchhead:0, }; }, created() { this.datelist = JSON.parse(sessionStorage.getItem(’lawcontent’)) console.log(this.datelist.lawTypeName) }, methods: { changeColor(item) { let searchitem = this.searchitem; console.log(this.datelist.lawTypeName); if (searchitem !== ’’) { return item.replace(new RegExp(searchitem, ’g’), ’<a >’ + searchitem + ’</a>’); } else { return item; } }, submit(){ let num = document.getElementsByTagName('a').length; //獲取所有a標簽的數量,這個頁面所有的a標簽都是由查詢替換獲得的,所以a標簽的數量可以當場查詢到關鍵詞的數量 if(num != 0){ //如果查詢關鍵詞存在,跳到第一個關鍵詞的位置,標頭增1,走滿一圈歸0 document.getElementsByTagName('a')[this.searchhead].scrollIntoView(); //scrollIntoView方法只在原生document中可以使用,jquery中沒有這個方法,參數默認是true,將這個元素置于頁面第一行(如果頁面可以滑動函數才生效) if(this.searchhead < (num - 1)){ this.searchhead += 1; }else if(this.searchhead == (num - 1)){ this.searchhead = 0; } }else{ } }, } };</script><style scoped> #content { white-space: pre-line; } .header { width: 100%; top: 0px; background: white; padding: 8px 8px; border-bottom: 2px solid #f5f5f5; } .search-total { width: 100%; height: auto; } .search_model_zt { height: 35px; background: #fff; } .search { width: 100%; /* margin: auto; */ border-radius: 30px; background-color: #f3f3f3; height: 32px; position: relative; } .search_icon { position: absolute; left: 5%; top: 7px; width: 16px; height: 16px; } .search_icon img { width: 100%; height: 100%; } .search_input { margin-left: 14%; } .search_input input { background: none; border: none; height: 34px; width: 100%; } input { outline: none; border: 0; background: none; font-size: 0.9rem; } .law-content { width: 100%; height: calc(100% - 95px); padding: 27px 18px 40px 16px; position: fixed; overflow: auto; } .law-content div { color: rgba(85, 85, 85, 1); font-size: 14px; }</style>

總結

到此這篇關于在vue項目實現一個ctrl+f的搜索功能的文章就介紹到這了,更多相關vue ctrl+f 搜索內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Vue
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品美女午夜爽爽| 久久亚洲国产精品尤物| 国产精品蜜芽在线观看| 精品久久亚洲| 日韩成人免费| 三上悠亚国产精品一区二区三区| 人在线成免费视频| 亚洲伦乱视频| 国产精品99一区二区| 亚洲性视频h| 99亚洲视频| 综合激情网...| 日韩1区2区3区| 免费日韩成人| 成人福利视频| 91中文字幕精品永久在线| 不卡福利视频| 亚洲精品在线观看91| 亚洲丝袜美腿一区| 欧美日韩精品一区二区三区视频| 国产精品极品国产中出| www.51av欧美视频| 九一国产精品| 日韩美女精品| 欧美激情国产在线| 亚洲深夜av| 欧美视频久久| 日韩av有码| 99在线观看免费视频精品观看| 亚洲精品在线二区| 91精品福利观看| аⅴ资源天堂资源库在线| 欧美亚洲在线日韩| 日韩一二三区在线观看| 国产精品3区| 国产一区二区三区自拍| 亚洲毛片视频| 国产成人精品福利| 中日韩男男gay无套| 国产三级一区| 久久裸体视频| 日韩中文字幕无砖| 成人一二三区| 亚洲综合小说| 国产一区二区三区免费在线| 欧美日韩黑人| 久久精品72免费观看| 蜜桃成人精品| 日韩精品亚洲专区| 日韩视频网站在线观看| 婷婷亚洲精品| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 国产成人精品999在线观看| 激情综合网站| 国产精品中文字幕制服诱惑| 偷拍精品精品一区二区三区| 日韩中文字幕在线一区| 亚洲午夜天堂| 亚洲欧美一级| 日韩欧美一区免费| 日韩高清不卡在线| 久久一区二区三区喷水| 国产精品九九| 99在线|亚洲一区二区| 成人影视亚洲图片在线| 亚洲精品一区二区在线播放∴| 91亚洲国产| 青青青国产精品| 国产精品88久久久久久| 美女毛片一区二区三区四区最新中文字幕亚洲| 日韩精品免费一区二区在线观看| 亚洲三级在线| 极品日韩av| 国产精品mv在线观看| 尹人成人综合网| 国产夫妻在线| 欧美亚洲福利| 国产精品日本| 天堂网av成人| 欧美精品二区| 综合五月婷婷| 久久精品亚洲人成影院| 欧美国产中文高清| 亚洲综合专区| 国产精品普通话对白| 日韩欧美综合| 精品国产午夜肉伦伦影院| 五月国产精品| 五月婷婷亚洲| 久久婷婷久久| 欧美丰满日韩| 麻豆极品一区二区三区| 日本免费在线视频不卡一不卡二| 在线视频亚洲| 欧美粗暴jizz性欧美20| 精品三区视频| 国产剧情一区二区在线观看| 亚洲综合婷婷| 99国产精品99久久久久久粉嫩| 色网在线免费观看| 久久精品天堂| 国产精品国码视频| 婷婷综合电影| 老鸭窝毛片一区二区三区| 激情久久中文字幕| 日韩一区二区三区免费| 欧美丰满日韩| 国产一区二区亚洲| 欧美交a欧美精品喷水| 欧美日本精品| 日韩1区2区日韩1区2区| 亚洲精品进入| 一区二区国产在线观看| 亚洲综合二区| 亚洲少妇一区| 日韩午夜av| 夜夜嗨一区二区三区| 亚洲少妇一区| 亚洲深夜av| 亚洲视频www| 久久成人精品| 亚洲永久精品唐人导航网址| 亚洲欧洲美洲国产香蕉| 日韩三级一区| 国产日产一区| 久久99青青| 韩国一区二区三区视频| 高清日韩欧美| 成人精品中文字幕| 欧美成人精品| 亚洲在线电影| 亚洲精品少妇| 国产三级精品三级在线观看国产| 日韩综合一区二区| 欧美日韩网址| 麻豆一区二区在线| av免费不卡国产观看| 播放一区二区| 五月天久久久| 亚洲一级大片| 国产毛片一区二区三区| 精品国产不卡一区二区| 亚洲伦乱视频| 日韩午夜黄色| 日韩免费精品| 老色鬼精品视频在线观看播放| 国产h片在线观看| 欧美不卡高清| 免费人成精品欧美精品| 91嫩草精品| 精品黄色一级片| 成人免费电影网址| 国产农村妇女精品一二区| 日本国产欧美| 国产福利91精品一区二区| 亚洲午夜黄色| 亚洲精品三级| 精品成人18| 亚洲激精日韩激精欧美精品| 天海翼亚洲一区二区三区| 国产精品久久久久av蜜臀| 亚洲精品成人图区| 黄色av一区| 日韩精品欧美大片| 国产精品欧美一区二区三区不卡| 高清av不卡| 免费久久99精品国产| 国产精品亚洲欧美一级在线 | 久久av网址| 亚洲五月婷婷| 97se亚洲| 亚洲1234区| 亚洲青青久久| 成人午夜亚洲| 亚洲中字黄色| 欧美激情久久久久久久久久久| 国产精品久久久久久久免费观看| 亚洲欧美伊人| 久久精品72免费观看| 久久精品导航| 日韩av网站在线免费观看| 午夜久久中文| 日韩中文av| 日韩中文影院| 国产日韩欧美三级| 欧美影院三区| 国产精品一页| 日韩亚洲在线| 国语对白精品一区二区| 午夜一级久久| 91一区二区| 日韩精品国产精品| 亚洲啊v在线| 日韩精品91亚洲二区在线观看| 日韩精品永久网址| 日韩中文字幕在线一区| 久久香蕉国产| 美女精品久久| 日欧美一区二区| 欧美午夜精彩|