我需要编写一个函数,在我的 HTML 页面中的所有内容中搜索特定字符串,如果找到,则更改文本的颜色。
这可能吗?
谢谢
你可以这样做:
CSS:
.someclass {
color: red;
}
Javascript:
$('p:contains('+yourstring+')', document.body).each(function(){
$(this).html($(this).html().replace(
new RegExp(yourstring, 'g'), '<span class=someclass>'+yourstring+'</span>'
));
});
请注意,如果您的字符串在标签或属性中,这会产生问题。
在将处理程序附加到段落(或其中可能包含您的字符串的元素,例如链接)之前,请小心运行此代码。
dystroy 的答案的问题是它会覆盖整个 HTML,因此如果您在包含文本的节点中有任何处理程序,它们将被删除。
正确的解决方案是使用文本范围仅更新文本本身,而不是其周围的所有 HTML。请参阅使用 JavaScript 突出显示文本范围
为了好玩,有一个内置的方法window.find可以在FF 和 Chrome中使用。但它不在标准中,一次只能找到一个。就像 ctrl+f 一样。
window.find("anything");
JQuery 查找和更改字符串的样式>>仅复制粘贴并运行:)
$('#seabutton').click(function()
{
var sea=$('#search').val();
var cont=$('p').val();
alert(cont);
$('p:contains('+sea+')').each(function()
{
/* $(this).html($(this).html().replace(new RegExp(sea, 'g'),'<span class=someclass>'+sea+'</span>'));
*/ $(this).html($(this).html().replace(
new RegExp(sea, 'i'), '<span class=someclass>'+sea+'</span>'
));
});
});
$('p').click(function()
{
$(".someclass").css("color", "black");
});
$('#search').blur(function()
{
$(".someclass").css("color", "black");
});
})
</script>
<style type="text/css">
.someclass {
color: red;
}
</style>
</head>
<body>
<!-- Select Country:<select id="country" name="country">
</select>
<table id="state" border="1">
</table> -->
<br>
Enter Text:<input type="text" id="search"/><input type="button" id="seabutton" value="Search"/>
<div id="serach">
<p>This is ankush Dapke
</p>
</div>
</body>
</html>