当前位置:首页 > 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 结合实现:

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() 操作选区内容:

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 样式:

js实现选区

.highlight { background-color: yellow; }

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

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

相关文章

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现论坛

js实现论坛

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

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的JWT令牌…

js实现文字滚动

js实现文字滚动

实现文字滚动的几种方法 使用CSS动画实现滚动 通过CSS的@keyframes和transform属性可以实现平滑的文字滚动效果。 <style> .scroll-text { w…

js实现下拉菜单

js实现下拉菜单

使用HTML和CSS创建基础结构 HTML部分需要包含一个触发下拉的按钮和隐藏的下拉菜单内容: <div class="dropdown"> <button class="dr…