JQuery/Javascript - 搜索DOM以获取文本并插入HTML

6 html javascript jquery dom insert

如何在DOM中搜索文档文本中的某个字符串(例如"cheese"),然后在该字符串后立即插入一些HTML(例如,"<b>非常棒</ b>").

我尝试过以下方法:

for (var tag in document.innerHTML) {
    if (tag.matches(/cheese/) != undefined) {
        document.innerHTML.append(<b>is fantastic</b>
    }
}
Run Code Online (Sandbox Code Playgroud)

(上面更多的是我尝试过的例子,而不是实际的代码.我希望语法是非常错误的,所以请原谅任何错误,它们不是问题).

干杯,

皮特

Dr.*_*lle 9

有一些本机方法可以在文档中查找文本:

MSIE:textRange.findText()
其他:window.find()

如果找到了某些内容,则操纵给定的textRange.
这些方法应该提供比遍历整个文档更多的性能.

例:

<html>
<head>

  <script>
  function fx(a,b)
  {
    if(window.find)
    {
      while(window.find(a))
      {
        var node=document.createElement('b');
            node.appendChild(document.createTextNode(b));
        var rng=window.getSelection().getRangeAt(0);
            rng.collapse(false);
            rng.insertNode(node);
      }
    }
    else if(document.body.createTextRange)
    {
      var rng=document.body.createTextRange();
      while(rng.findText(a))
      {
        rng.collapse(false);
        rng.pasteHTML('<b>'+b+'</b>');
      }
    }
  }
  </script>
</head>
<body onload="fx('cheese','is wonderful')">
<p>I've made a wonderful cheesecake with some <i>cheese</i> from my <u>chees</u>e-factory!</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)


Eiv*_*ind 6

这是粗糙的,而不是这样做的方式,但是;

document.body.innerHTML = document.body.innerHTML.replace(/cheese/, 'cheese <b>is fantastic</b>');
Run Code Online (Sandbox Code Playgroud)

  • 希望"奶酪"不会在元素属性,CSS或JS中. (2认同)