JS模拟浏览器实现全局搜索功能
发布时间:2020-10-22 09:18:55
来源:脚本之家
阅读:107
作者:loveEternity
需要像浏览器的全局搜索一样,搜索指定模块的对应值,然后将匹配到的内容添加背景颜色等。
思路
需要取到当前指定区域的所有内容
然后在取到的内容中找到搜索的内容加上对应的背景颜色
最后在将修改后的内容渲染到页面上
实现
利用innerHTML取到对应模块的内容
编写对应的正则表达式来匹配搜索的内容
利用String.prototype.replace替换匹配到的内容
最后在渲染到页面上
代码实现:
let wrap = document.querySelector('.wrap');
let innerHTML = wrap.innerHTML;
let reg = new RegExp(query, 'g');
innerHTML = innerHTML.replace(reg, '' + query + '');
wrap.innerHTML = innerHTML;
具体的实现搜索实现就完成了,但是上面代码还有个缺陷,就是更换搜索内容时,之前搜索的内容还是具有选中的样式,那么接下来完善功能:
let preQuery = ''; // 上一次搜索的内容
let wrapDom = ''; // 搜索区域的dom元素</