搜索内容把对应内容变为红色的函数就是changeColor
changeColor(item){
letsearchitem=this.searchitem;//获取动态变化的搜索词
if(searchitem!==''){//若搜索词不为空,对搜索词进行替换
returnitem.replace(newRegExp(searchitem,'g'),''+searchitem+'');
}else{
returnitem;
}
},
到此,动态输入标红搜索词的功能已经做好了,但是搜索框还有一个回车事件我觉得在实际上也应该有点用,比如跳到第一个关键词什么的,这个时候,我又看见了一个神奇的方法
document.getElementsByTagName("a").scrollIntoView();
当页面可以支持滑动时,scrollIntoView可以把对于元素滑倒页面顶部(默认),也可以通过参数赋值给false让对应元素赋值到底部,仅支持原生js,jQuery中没有这个方法,那么问题来了,我上面替换出了那么多a标签,怎么能让他们排好队一个一个被调用了,那当然只能遍历了,但是原生js中没有jQuery中eq那样的选择器,怎么才能让js知道我要找的是第n个a标签呢
submit(){
letnum=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;
}elseif(this.searchhead==(num-1)){
this.searchhead=0;
}
}
},
原来,getElementsByTagName(“a”)返回的是带有指定标签名的对象的集合。通过对数组的序列的调用就可以完成对方法的依次调用。
至此,这个简单页面的功能已基本实现,
源码
#content{
white-space:pre-line;
}
.header{
width:100%;
top:0px;
background:white;
padding:8px8px;
border-bottom:2pxsolid#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_iconimg{
width:100%;
height:100%;
}
.search_input{
margin-left:14%;
}
.search_inputinput{
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:27px18px40px16px;
position:fixed;
overflow:auto;
}
.law-contentdiv{
color:rgba(85,85,85,1);
font-size:14px;
}
总结
到此这篇关于在vue项目实现一个ctrl+f的搜索功能的文章就介绍到这了,更多相关vuectrl+f搜索内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。