当前位置:首页 > JavaScript

js实现高亮显示

2026-03-01 02:49:15JavaScript

高亮显示的实现方法

在JavaScript中实现高亮显示通常涉及文本内容的查找与样式修改。以下是几种常见方法:

使用CSS类与DOM操作

通过创建高亮样式类并动态应用到匹配文本节点:

function highlightText(text, searchTerm) {
  const regex = new RegExp(searchTerm, 'gi');
  return text.replace(regex, match => `<span class="highlight">${match}</span>`);
}

// 使用示例
document.getElementById('content').innerHTML = 
  highlightText(document.getElementById('content').textContent, '关键词');

配套CSS样式:

.highlight {
  background-color: yellow;
  font-weight: bold;
}

使用Range和Selection API

适用于精确控制选中范围的高亮需求:

function highlightSelection() {
  const selection = window.getSelection();
  if (selection.toString().length > 0) {
    const range = selection.getRangeAt(0);
    const span = document.createElement('span');
    span.className = 'highlight';
    range.surroundContents(span);
  }
}

使用第三方库

如Mark.js库提供更丰富的高亮功能:

// 引入mark.js后
const markInstance = new Mark(document.querySelector('.context'));
markInstance.mark('keyword', {
  className: 'custom-highlight',
  acrossElements: true
});

动态搜索高亮实现

结合输入框实时高亮匹配内容:

const searchInput = document.getElementById('search');
searchInput.addEventListener('input', () => {
  const term = searchInput.value.trim();
  if (term) {
    const instance = new Mark(document.querySelector('#content'));
    instance.unmark().mark(term);
  }
});

性能优化建议

对于大文本内容的高亮操作:

js实现高亮显示

  • 使用文档片段(DocumentFragment)进行批量DOM操作
  • 采用防抖(debounce)技术控制高频触发
  • 优先使用textContent而非innerHTML
  • 考虑虚拟滚动技术处理超长文本

注意事项

  • 处理HTML转义防止XSS攻击
  • 清除旧高亮时注意内存泄漏问题
  • 跨元素匹配时需要特殊处理文本节点
  • 考虑浏览器兼容性(尤其IE11及以下)

以上方法可根据具体场景选择使用,建议复杂需求优先考虑成熟的第三方库实现。

标签: js高亮
分享给朋友:

相关文章

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选框…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…

js实现正交

js实现正交

正交的概念 正交在数学和计算机科学中通常指两个向量垂直或线性无关。在编程中,正交性常被用于设计模块化、低耦合的系统。 向量正交判断 判断两个向量是否正交可以通过点积是否为0来实现: functio…