突出显示 HTML 文本中的单词(但不是标记)

2023-11-26

我试图突出显示正文内的所有匹配单词,但不突出显示任何 html 标记内的单词。例如,给出的关键字是“para”。这是该段落:

<p class="para"> Example of paragraph. Lorem ipsum dolor sit amet. </p>

导致:

<p class="para">
Example of <strong>para</strong>graph. Lorem ipsum dolor sit amet.
</p>

我知道这可以通过 JavaScript 实现replace()但我对正则表达式不太了解。


Demo: http://jsfiddle.net/crgTU/7/

highlightWord(document.body,'para');

function highlightWord(root,word){
  textNodesUnder(root).forEach(highlightWords);

  function textNodesUnder(root){
    var n,a=[],w=document.createTreeWalker(root,NodeFilter.SHOW_TEXT,null,false);
    while(n=w.nextNode()) a.push(n);
    return a;
  }

  function highlightWords(n){
    for (var i; (i=n.nodeValue.indexOf(word,i)) > -1; n=after){
      var after = n.splitText(i+word.length);
      var highlighted = n.splitText(i);
      var span = document.createElement('span');
      span.className = 'highlighted';
      span.appendChild(highlighted);
      after.parentNode.insertBefore(span,after);
    }
  }
}
​

您也可以考虑调用类似...

function removeHighlights(root){     
  [].forEach.call(root.querySelectorAll('span.highlighted'),function(el){
    el.parentNode.replaceChild(el.firstChild,el);
  });
}

…在您寻找新的高亮显示之前(从 DOM 中删除旧的高亮显示)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

突出显示 HTML 文本中的单词(但不是标记) 的相关文章

  • 在其他不可滚动的 div 上滚动时如何滚动可滚动的 div?

    我知道这个问题听起来很令人困惑 但这就是我想要做的 在下面的代码片段中 如果用户在绿色 div 上滚动 我希望黄色 div 相应地滚动 就像滚动黄色 div 一样 请注意 黄色 div 有overflow auto 但绿色的则不然 docu
  • 如何在bootstrap中默认隐藏侧边栏?

    我在这里有一个很好的参考 作为 Bootstrap 在设计 Web 表单应用程序时的侧边栏 http startbootstrap com template overviews simple sidebar http startbootst
  • 您可以将现有的 div 复制到模式对话框吗

    我有一个带有多个面板的仪表板来显示不同的信息 我希望能够添加一个按钮来以模式显示面板 我正在使用引导程序 我所能找到的只是已经编写的模态 我想复制作为面板的 div 标签的内容 然后将其显示在模型中 但我不确定如何进行 该面板的 html
  • Sonar 中的 javascript 代码覆盖率

    我是使用 Sonar 和插件进行 javascript 代码覆盖的新手 使用 Sonar 分析时 有哪些可能性可以找出 javascript 代码的质量 包括代码覆盖率 目前我正在使用 karma runner 它提供代码覆盖率报告 可以在
  • 如何在 Sequelize ORM 中限制连接行(多对多关联)?

    Sequelize 定义了两种模型 具有多对多关联的 Post 和 Tag Post belongsToMany db Tag through post tag foreignKey post id timestamps false Tag
  • Sequelize - 使用 es6 和模块运行迁移

    我不确定我是否做错了什么或者什么 我觉得我正在运行一个现代的 相当常见的堆栈 但我无法让新的 Sequelize v6 与我的设置完美配合 我在 Node v14 17 Sequelize v6 6 2 上 在我的 package json
  • 在 setInterval / setTimeout 中使用变量作为时间[重复]

    这个问题在这里已经有答案了 这是一个示例情况 var count time 1000 setInterval function count 1 time 上面的代码会将 count 变量加 1 即 1000 毫秒 看来 setInterva
  • window.open:是否可以打开一个新窗口并修改其 DOM

    我想打开一个新窗口 var my window open iframe html blank height 600 width 600 但当我打开它时 我想修改它的DOM 我尝试过 var div my document createEle
  • html canvas动画卡顿

    谁能解释为什么提供的画布动画断断续续 我创建了一个测试存根来演示该问题 我在桌面上的 FF Chrome IE 以及 Android 上的 FF 和 Chrome 中看到了卡顿现象 口吃是由于垃圾收集造成的吗 似乎 raf 在每次调用时都会
  • java中删除字符串中的特殊字符?

    如何删除字符串中除 之外的特殊字符 现在我用 replaceAll w s 它删除了所有特殊字符 但我想保留 谁能告诉我我该怎么办 Use replaceAll w s 我所做的是将下划线和连字符添加到正则表达式中 我添加了一个 连字符之前
  • 带有 mkdocs 的本地 mathjax

    我想在无法访问互联网的计算机上使用 MathJax 和 Mkdocs 因此我不能只调用 Mathjax CDN Config mkdocs yml site name My Docs extra javascript javascripts
  • 使用正则表达式搜索 Ruby 数组

    你好 我有一个小的 ruby 函数 它可以分割出一个 Ruby 数组 如下所示 def rearrange arr from to sidx arr index from eidx arr index to arr sidx arr sid
  • 自定义指令链接中的 element.replaceWith 仅在第一次调用时有效

    我是 Angularjs 的新手 不太了解幕后的情况 基本上我想创建一个 E 扭结指令 基于控制器中的数据 我动态创建html 就像整个 表 一样 以替换该指令 我的 html 文件中的指令是这样的
  • 尝试使用 Firebug 查找 JavaScript 文件中的函数

    我试图找到这个函数调用 myFooBar 该函数在某些 HTML 中内联引用 但页面加载了大量 JavaScript 并且在每个文件中搜索该函数需要相当多的工作 如何使用 Firebug 找到此函数所在的 JavaScript 文件 打开脚
  • Javascript 中 if 语句中的假值?

    过去两周 我在学校研究 JavaScript 的事情已经有一段时间了 而且我一直在做我的作业 在 Douglas Crockford 所著的 JavaScript The Good Parts 一书中 作者在第 11 页上列出了 if 语句
  • 检测浏览器选项卡是否具有焦点

    是否有可靠的跨浏览器方法来检测选项卡是否具有焦点 场景是 我们有一个定期轮询股票价格的应用程序 如果页面没有焦点 我们可以停止轮询并为每个人节省流量噪音 特别是当人们喜欢打开具有不同投资组合的多个选项卡时 Is window onblur
  • AngularJS 在指令运行之前通过 AJAX 检索数据

    我正在使用 AngularUIuiMap http angular ui github com directives map实例化谷歌地图的指令 uiMap 指令非常适合处理硬编码数据 mapOptions and myMarkers 但是
  • ReactJs 警告:不推荐使用改变“style”。考虑事先克隆它

    我收到以下警告 inWarning div was passed a style object that has previously been mutated Mutating style is deprecated Consider c
  • p5 向量减法“sub”返回错误

    我一直在尝试将 p5 草图上传到 React 构建中 使用react p5 wrapper 我能够成功在屏幕上渲染画布 但是 某些矢量函数会导致错误 var distance this position dist ball position
  • JQuery 删除和内存泄漏

    我正在开发一个游戏 我看到了很多内存消耗 我使用jquery animate 动画完成后 我 remove 元素 我的问题是 从 dom 树中删除一个元素后 对象还存在记忆中吗 Javascript 是一种垃圾收集语言 这意味着当没有代码保

随机推荐

  • 在 Objective C 中隐藏头文件中的实例变量

    我遇到了一个用 Objective C 编写的库 我只有头文件和 a 二进制文件 在头文件中 是这样的 interface MyClass MySuperClass nothing here property nonatomic retai
  • 关键字“params”到底如何工作?

    以下代码示例打印 T T T 虽然前两行符合预期 但为什么编译器选择 param array 作为常规数组 public class A public void Print
  • Android 上的 Google 语音识别器需要互联网吗?

    我使用以下代码来调用谷歌的语音识别器 This is a demonstration of Android s built in speech recognizer package com example voiceinputbuiltin
  • 删除矩阵中的重复列

    我有一个尺寸为401 5677的数据集 在该矩阵的列中 存在相同但列名不同的列 现在 我想只保留重复多次的列中的一列 并获取已删除列的索引 j 让我们使用以下矩阵作为示例 B matrix c 1 4 0 2 56 7 1 4 0 33 2
  • 允许更多 WebGL 上下文

    我目前正在开发一个包含项目列表的网站 每个项目都有一个缩略图 我使用以下方法为所有项目添加着色器效果PixiJS 问题是列表中的项目超过 16 个 因此我收到以下错误 警告 活动的 WebGL 上下文过多 最旧的上下文将丢失 有没有办法提高
  • 在 JavaScript 中创建多行字符串

    我在 Ruby 中有以下代码 我想把这段代码转换成 JavaScript JS 中的等效代码是什么 text lt lt HERE This Is A Multiline String HERE Update ECMAScript 6 ES
  • 如何在 Eclipse 中关闭 ViewPart?

    我在 Eclipse 中有一个视图 由一个扩展的类实现 org eclipse ui part ViewPart 我需要关闭它 我的意思是完全接近 而不仅仅是隐藏 我希望当用户 或我的代码 要求再次打开视图时创建一个新的 ViewPart
  • Cookie 总是过期的

    我正在设置一个 cookie HttpCookie cookie new HttpCookie simpleorder cookie Expires DateTime Now AddYears 1 cookie order carModel
  • 如何添加网络安全配置以在 Nougat 中启用 Charles 代理 SSL?

    我正在尝试启用Charles Proxy我的 SSLSamsung s8运行于Android Nougat但不知道该怎么做 Before Nougat我能够成功记录我的设备上多个应用程序的查尔斯会话 已关注this and this设置一切
  • 类型错误:Firebase 不是函数

    我正在尝试遵循 firebase Node 教程 https www firebase com docs web quickstart html 我的 node js 应用程序因 TypeError Firebase 不是函数 错误而崩溃
  • C++11 可以判断 std::thread 是否处于活动状态吗?

    令我惊讶的是 一个已完成执行但尚未加入的 C 11 std thread 对象仍然是经过考虑的活动的执行线程 以下代码示例对此进行了说明 在 Xubuntu 13 03 上使用 g 4 7 3 构建 有谁知道 C 11 标准是否提供了一种方
  • MVC DropDownListFor Null 值

    我在 MVC 中使用 htmlhelper 的下拉列表时遇到问题 当回发发生时 没有选择任何内容 并且列表模型中的值和所选项目为空 这是我的模型 namespace MvcTestWebApp Models public class Cus
  • 使用“for”循环对包含数字的数组进行排序

    我是 JavaScript 新手 我有一个包含数字的数组 var arr 2 4 8 1 5 9 3 7 6 我如何使用本地人对其进行排序for loop在 JavaScript 中 我知道排序功能可用 但我希望它通过for loop 输出
  • 如果出现错误,如何使用 try...catch 并让我的脚本停止?

    我试图让我的脚本在遇到错误时停止 并使用 try catch 为我提供一种简单的方法来处理错误 我本以为这是世界上最简单的事情 但我显然在做一些愚蠢的事情 我读了几个小时 但我被困住了 任何帮助都会非常方便 谢谢 这是一些示例代码 我把错误
  • CSS 框上的斜角[重复]

    这个问题在这里已经有答案了 我使用 CSS 的时间很短 我正在尝试制作一个普通的盒子 但左上角以 45 度角切掉 数额也不小 我正在看那个角度的一个相当大的切角 这个效果 我该怎么办 描述 倾斜 http meyerweb com eric
  • Swift 协议继承和通用函数

    考虑以下游乐场 import Foundation protocol StringInitable init string String class A StringInitable var stored String required i
  • 如何在 Apache Spark 中获取上一行的数据

    从 Spark Data 框架中查找每个城市上个月的销售情况 City Month Sale c1 JAN 2017 49 c1 FEB 2017 46 c1 MAR 2017 83 c2 JAN 2017 59 c2 MAY 2017 6
  • ServiceStack没有服务器端异步支持

    我的一个朋友告诉我他过去看过 ServiceStack 说它看起来不错 但没有异步支持 所以在他的书中 它不是使用这个框架的选项 如果没有异步就不好 我必须同意 除非ServiceStack添加了异步 否则不确定这对我来说是否是一个不错的选
  • 使用 Async 和 Await 的 ASP.NET C#5 异步 Web 应用程序

    研究了异步 Web 开发的概念 特别是来自this来源 我创建了一个示例应用程序来证明这个概念 该解决方案由 2 个 ASP NET Web API 应用程序组成 第一个是模拟的慢端点 它等待 1000 毫秒 然后返回一个名为 Studen
  • 突出显示 HTML 文本中的单词(但不是标记)

    我试图突出显示正文内的所有匹配单词 但不突出显示任何 html 标记内的单词 例如 给出的关键字是 para 这是该段落 p class para Example of paragraph Lorem ipsum dolor sit ame