当前位置:首页 > JavaScript

js实现选区

2026-03-15 07:05:15JavaScript

选区操作基础概念

选区(Selection)指用户在页面上通过鼠标或键盘选中的文本范围,可通过 JavaScript 操作。核心对象是 SelectionRange,前者表示用户选择的区域,后者表示具体的文档片段范围。

获取当前选区

通过 window.getSelection() 获取选区对象,返回 Selection 实例:

const selection = window.getSelection();
// 检查是否有选中内容
if (selection.toString().length > 0) {
  console.log("选中文本:", selection.toString());
}

创建自定义选区

通过 RangeSelection 结合实现:

js实现选区

const paragraph = document.getElementById("myText");
const range = document.createRange();
range.selectNodeContents(paragraph); // 选中段落内容

const selection = window.getSelection();
selection.removeAllRanges(); // 清除现有选区
selection.addRange(range);   // 添加新选区

选区边界控制

通过 setStartsetEnd 精确控制选区范围:

const textNode = document.querySelector("#myText").firstChild;
const range = document.createRange();
range.setStart(textNode, 5);  // 从第5个字符开始
range.setEnd(textNode, 10);   // 到第10个字符结束
window.getSelection().addRange(range);

选区内容修改

通过 deleteContents()extractContents() 操作选区内容:

js实现选区

const selection = window.getSelection();
const range = selection.getRangeAt(0);
range.deleteContents(); // 删除选中内容
// 或提取内容到文档片段
const fragment = range.extractContents();
document.body.appendChild(fragment);

插入内容到选区

使用 insertNodesurroundContents

const range = window.getSelection().getRangeAt(0);
const newNode = document.createElement("span");
newNode.textContent = "插入的内容";
range.insertNode(newNode);

// 包裹选区内容
const wrapper = document.createElement("strong");
range.surroundContents(wrapper);

兼容性注意事项

  • 旧版 IE 使用 document.selection 而非 window.getSelection()
  • 操作前需检查选区是否存在(selection.rangeCount > 0)。

实际应用示例

高亮选中文本的完整代码:

document.addEventListener("mouseup", () => {
  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);
    selection.removeAllRanges();
  }
});

CSS 样式:

.highlight { background-color: yellow; }

通过上述方法可实现动态选区操作,适用于富文本编辑、标注等场景。

标签: 选区js
分享给朋友:

相关文章

js实现跳转

js实现跳转

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

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="slid…

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

链表实现js

链表实现js

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针(单向链表)或两个指针(双向链表)。与数组不同,链表在内存中非连续存储,插入和删除操作更高效,但随机…

js验证码的实现

js验证码的实现

验证码的基本实现原理 验证码(CAPTCHA)的核心目标是区分人类用户和自动化程序。JavaScript可用于生成或验证客户端验证码,但需注意纯前端验证可能被绕过,通常需结合后端验证。 纯前端验证码…

js图片轮播的实现

js图片轮播的实现

基础图片轮播实现 使用HTML、CSS和JavaScript实现一个简单的图片轮播效果。HTML部分定义轮播容器和图片,CSS负责样式和过渡效果,JavaScript处理逻辑。 <div cl…