【发布时间】:2018-07-28 08:35:11
【问题描述】:
我需要使用 Javascript 将 HTML 字符串的一部分包装在一个新元素中。例如来自这个:
<div>This is some text.<b title="some text">This is some other element</b></div>
到这里:
<div>This is <a>some text</a>.<b title="some text">This is some other element</b></div>
这是我当前的代码,简化:
var s = "some text"
var regExp = RegExp(s, 'i');
element.innerHTML = element.innerHTML.replace(regExp, '<a>$&</a>');
<div>This is some text.<b title="some text">This is some other element</b></div>
此代码在普通情况下有效,但当有标记与我的搜索过滤器匹配的子元素时失败,如上面的标题属性。此外,它似乎破坏了元素引用,因为在设置 innerHTML 时元素被重新初始化(并且 innerHTML 似乎非常不鼓励)。
我认为这应该可以通过找到一个 textNode、解析它并在其位置创建新节点来实现,但我很难让它工作。
【问题讨论】:
-
只需创建一个临时元素,并将字符串添加为 HTML。然后使用 DOM 解析器来提取/修改元素。
标签: javascript html replace word-wrap