Javascript Basic:搜索和突出显示
Javascript Basic: Search and Highlight
我想在加载页面时突出显示div中的一个单词。我的代码是
<script type="text/javascript">
function highlight(container,what,spanClass) {
var content = container.innerHTML,
pattern = new RegExp('(>[^<.]*)(' + what + ')([^<.]*)','g'),
replaceWith = '$1<span ' + ( spanClass ? 'class="' + spanClass + '"' : '' ) + '">$2</span>$3',
highlighted = content.replace(pattern,replaceWith);
return (container.innerHTML = highlighted) !== content;
}
</script>
</head>
<body onload="highlight(document.getElementById('hello'),'florida','highlight');">
<div id="hello"> Florida florida orlando orlando</div>
Florida Texus florida
</body>
</html>
在FF/Chrome/IE中什么都没有发生。我需要你的建议来解决这个问题。
这是因为您使用的代码只有在元素周围有一些HTML标记时才有效。
它将在更通用的情况下工作,例如,如果您将div更改为
<div id="hello"><p> Florida florida orlando orlanodo</p></div>
为了让它与HTML一起工作,你可以使用一个更简单的正则表达式:
new RegExp('(' + what + ')','g')
和一个不同的替代品:
replaceWith = '<span ' + ( spanClass ? 'class="' + spanClass + '"' : '' ) + '">$1</span>'
您也可以更改正则表达式,使组成为可选组:
pattern = new RegExp('(>[^<.]*)?(' + what + ')([^<.]*)?','g'),
演示
我想你要找的是突出显示单词florida
,如果它是分开的,那么试试
function highlight(container,what,spanClass) {
var content = container.innerHTML,
pattern = new RegExp('''b(' + what + ')''b','g'),
replaceWith = '<span ' + ( spanClass ? 'class="' + spanClass + '"' : '' ) + '">$1</span>',
highlighted = content.replace(pattern,replaceWith);
return (container.innerHTML = highlighted) !== content;
}
演示:Fiddle
相关文章:
- 使用API在我的网站Google-Map上显示搜索地址的纬度和经度
- 为自定义网站创建JavaScript搜索框,创建显示搜索结果的弹出窗口
- 突出显示搜索文本引导程序表
- jqGrid不显示搜索按钮
- 根据完整的关键字突出显示搜索关键字的文本
- Javascript PHP在点击搜索时出现弹出图像,关闭图像后显示搜索结果
- 数据表:禁用第一个下一个上一个最后一个,并在处理时显示/搜索记录
- 如何在 Rails 中突出显示搜索到的单词
- 单击搜索按钮后如何显示搜索详细信息
- 使用 jquery 显示搜索中的匹配行
- 显示搜索结果
- 提示搜索不显示搜索结果
- 突出显示搜索结果在某些情况下不起作用
- 如何使用动画颜色更改突出显示搜索词
- 数据表sAjaxSource Json突出显示搜索数据
- 如何使用jquery在搜索结果中突出显示搜索关键字
- 突出显示搜索列表不工作(jquery问题)
- 显示搜索字段时,有些人开始在网页上输入
- 如何在覆盖中显示搜索结果页面
- 使用Angular显示搜索结果