当前位置:首页 > JavaScript

js实现高亮显示

2026-01-30 11:41:34JavaScript

实现高亮显示的方法

在JavaScript中实现高亮显示通常涉及操作DOM元素,修改文本样式或添加特定类。以下是几种常见方法:

使用HTML和CSS结合JavaScript

通过JavaScript动态添加高亮样式类,CSS定义高亮效果:

.highlight {
  background-color: yellow;
  color: black;
}
function highlightText(elementId, textToHighlight) {
  const element = document.getElementById(elementId);
  const content = element.innerHTML;
  const highlightedContent = content.replace(
    new RegExp(textToHighlight, 'gi'),
    match => `<span class="highlight">${match}</span>`
  );
  element.innerHTML = highlightedContent;
}

使用Range和Selection API

适用于精确控制选中文本范围的高亮:

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

第三方库实现

使用专门的高亮库如Mark.js简化操作:

<script src="https://cdn.jsdelivr.net/npm/mark.js@8.11.1/dist/mark.min.js"></script>
const instance = new Mark(document.querySelector('.content'));
instance.mark('keyword', {
  className: 'highlight'
});

注意事项

  • 直接操作innerHTML可能导致XSS漏洞,需对输入内容转义
  • 高亮大量文本时可能影响性能,建议使用文档片段(DocumentFragment)
  • 清除旧高亮时需遍历移除相关DOM节点或类名

清除高亮的方法

function removeHighlights() {
  const highlights = document.querySelectorAll('.highlight');
  highlights.forEach(highlight => {
    const parent = highlight.parentNode;
    parent.replaceChild(document.createTextNode(highlight.textContent), highlight);
  });
}

js实现高亮显示

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

相关文章

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 或直接使用 window.location 实现页面跳转,适用于普通跳转或带参数的 URL。 // 方…

js实现倒计时

js实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时功能可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是几种常见的实现方式: 使用 setInterva…

vue.js实现轮播

vue.js实现轮播

Vue.js 实现轮播功能 使用第三方库(推荐) Vue.js 生态中有许多成熟的轮播组件库,例如 vue-awesome-swiper 或 swiper,它们功能丰富且易于集成。 安装 swip…

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现继承

js实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Paren…