有什么办法可以实现类似功能吗,想在tabble表格上面加一个搜索功能,匹配到的文字可以变色
大家的意思基本都是通过动态改变网页元素的属性或者替换元素来改变。
但是现在我想找的是,不改变网页元素的属性,我想知道网页搜索变色的原理,网页搜索变色之后,在DOM元素上并不能找到控制颜色的属性。
有什么办法可以实现类似功能吗,想在tabble表格上面加一个搜索功能,匹配到的文字可以变色
大家的意思基本都是通过动态改变网页元素的属性或者替换元素来改变。
但是现在我想找的是,不改变网页元素的属性,我想知道网页搜索变色的原理,网页搜索变色之后,在DOM元素上并不能找到控制颜色的属性。
这个我刚好前几天做了...原因是因为有很多用户不知道浏览器是可以用来搜索页面内容的-_-||,效果很简单,用户在输入框内输入要查找的内容,如果页面中存在就实时变色,和浏览器自带的效果是一样的。
直接上代码吧,我是用VUE做的
HTML部分:
一个输入框,输入后实时显示匹配到的内容。
<style>
.highlight{
background: yellow;
color: red;
}
</style>
<input type="text" class="text" placeholder="请输入查询关键字..." v-model="name"/>
JS部分:
var vm = new Vue({
el:'#app',
data:{
name:''
},
methods:{
clearSelection:function(){
$('.contractName').each(function(){
//找到所有highlight属性的元素;
$(this).find('.highlight').each(function(){
$(this).replaceWith($(this).html());//将他们的属性去掉;
});
});
}
},
updated: function (){
var sCurText;
this.clearSelection();//清空样式
var searchText = this.name.replace(/\s/gi,"");
var regExp = new RegExp(searchText, 'g');//创建正则表达式,g表示全局的,如果不用g, 则查找到第一个就不会继续向下查找了
var content = $("#app").text(); //要查找的内容
if (!regExp.test(content)) {
alert("没有找到,请核对关键字");
return;
} else {
if (sCurText != searchText) {
sCurText = searchText;
}
}
//将找到的内容替换,加上highlight属性;
$('.contractName').each(function(){
var html = $(this).html();
var newHtml = html.replace(regExp, '<span class="highlight">'+searchText+'</span>');
$(this).html(newHtml);//更新;
});
}
})
10 回答10.7k 阅读
7 回答10.9k 阅读
6 回答2.6k 阅读
2 回答11.4k 阅读✓ 已解决
5 回答4.4k 阅读✓ 已解决
4 回答2.7k 阅读✓ 已解决
3 回答4.7k 阅读✓ 已解决
我感觉应该是这个思路,就是替换一下,把没有颜色得文字替换为有颜色得文字
<!DOCTYPE html>
<html>
怎样让这个文字随着浏览器宽度自动换行? 1 回答 | 已解决
求一份浏览器中html css javascript jquery ajax的渲染顺序与原理!! 1 回答 | 已解决
node.js + express 加载html页面后只能显示文字 提示图片 css文件加载404错误 1 回答 | 已解决
如何用JavaScript实现如下动画文字 6 回答
WeUI样式库中仅引用了.css为什么浏览器中显示.less文件 ? 3 回答 | 已解决
如何在火狐浏览器中让多行文字只显示两行且多余的文字用省略号代替 1 回答
css排版,在微信和uc中,文字下方出现空白 1 回答
如何隐藏滚动条但又能滚动,不用js实现 1 回答
</div>
</html>