如何在不打断标记的情况下突出显示html字符串中的文本
How to highlight text in a html string without breaking tags?
问题:给定任何html字符串,如何在文本中突出显示子字符串,但确保标记不受影响?
例如,替换子字符串"brown":
str='<img src="brown fox.jpg" title="The brown fox" /><p>some text containing brown.</p>';
或
str='<p>some <span style="color:brown">text containing brown</span></p>';
如何在文本中突出显示棕色的子字符串,而不是在标签内(以避免破坏标签。
这个问题最初出现在这里作为答案如何使用javascript 突出显示文本
我的解决方案是沿着标签拆分字符串,只替换数组中(标签之间)奇怪的部分,但我想知道是否有gotcha(我能想到的是无效的html,但应该在处理文本IMHO之前处理)
var str='<p>some <span style="color:brown">text containing brown</span></p>';
//split along tags
var parts = str.split(/[<>]+/);
//remove empty
parts = parts.filter(function(n){ return n != ""});
for (var i = 0; i < parts.length; i++) {
if (i%2 !== 0)
//console.log(parts[i]);
parts[i] = parts[i].replace("brown", "red whatever");
}
console.log(parts);
输出
["", "p", "some ", "span style="color:brown"", "text containing red whatever", "/span", "", "/p", ""]
假设您可以访问DOM而不是直接操作字符串,那么您可以通过执行来访问任何DOM节点的文本
$(selector).text()
将文本分配给一个变量,并根据你的内心内容对其进行操作,然后呼叫
$(selector).text(variable)
以更改DOM中的文本。
相关文章:
- Brightcove获取/显示HTML中的当前视频标题和描述
- HTML 标记未在 AngularJS ckEditor 中应用,而是在 Ediator 中显示 HTML 元素标记代码
- 使用jqLite隐藏和显示html元素
- 如何在不打断标记的情况下突出显示html字符串中的文本
- JS来显示HTML标记
- 如果javascript打开/关闭,则隐藏和显示html代码
- 用javascript显示html表
- 显示HTML代码块
- Regex有助于突出显示html中匹配文本的角度过滤器
- 为什么WebBrowser控件在保存后不能正确显示HTML
- 如何通过ibmworklight中的sql适配器从db2中检索或显示html页面上的数据?android混合应用程序开发
- 如何使用window.showModalDialog()显示HTML内容
- JavaScript if else 语句来显示 html 标签
- 使用 js 函数显示 HTML 表单的结果
- 如何在不点击的情况下突出显示 HTML 中的文本
- 如何隐藏和显示 html 输入文本和段落
- 使用 javascript 解析和显示 HTML 音频当前时间
- 有什么方法可以在HTML页面中显示HTML代码吗
- 在自动完成jqueryUi中显示html
- 单击并用CTRL+C复制值时高亮显示html表格单元格