当前位置:首页 > 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样式:

js实现高亮显示

.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库提供更丰富的高亮功能:

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);
  }
});

性能优化建议

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

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

注意事项

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

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

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

相关文章

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

js实现路由

js实现路由

js实现路由的方法 在JavaScript中实现路由功能可以通过多种方式完成,以下是几种常见的方法: 使用原生JavaScript实现路由 通过监听window.onhashchange事件来实现基…

js进度条实现

js进度条实现

使用HTML和CSS创建基础结构 在HTML中创建一个容器元素用于显示进度条,通常使用<div>元素。CSS用于设置进度条的样式,包括宽度、高度、颜色和圆角等属性。 <div cl…

js图片上传实现

js图片上传实现

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API实现基础图片上传功能。HTML部分需要设置accept="image/…