当前位置:首页 > JavaScript

js实现游标

2026-02-28 19:31:16JavaScript

游标的基本概念

游标(Cursor)在JavaScript中通常指代用户在界面上的指针位置或文本选择范围。可以通过DOM API获取或操作游标位置,常见于输入框、富文本编辑器等场景。

获取输入框游标位置

使用selectionStartselectionEnd属性获取输入框当前光标位置或选中文本范围:

const input = document.getElementById('myInput');
const cursorPos = input.selectionStart; // 获取光标开始位置
const selectionEnd = input.selectionEnd; // 获取光标结束位置

设置输入框游标位置

通过setSelectionRange()方法设置光标位置或选中范围:

input.setSelectionRange(3, 5); // 将光标定位在第3到第5字符之间(选中状态)
input.setSelectionRange(3, 3); // 将光标定位在第3字符后(非选中)

可编辑元素的游标控制

对于contentEditable元素或富文本编辑器,需要使用SelectionRange API:

const editableDiv = document.getElementById('editable');
const selection = window.getSelection();
const range = document.createRange();

range.setStart(editableDiv.childNodes[0], 5); // 从第1个子节点的第5字符开始
range.setEnd(editableDiv.childNodes[0], 10); // 到第1个子节点的第10字符结束
selection.removeAllRanges();
selection.addRange(range);

保存与恢复游标位置

需要保存游标状态时,可记录节点和偏移量:

const savedRange = range.cloneRange(); // 克隆当前Range对象
// 恢复时
selection.removeAllRanges();
selection.addRange(savedRange);

跨浏览器兼容方案

不同浏览器对游标API的实现有差异,推荐使用规范化库:

  • 对于输入框:使用input.selectionStart/End
  • 对于富文本:使用rangy.js等库处理兼容性

实际应用示例

自动聚焦并定位到输入框末尾:

js实现游标

function focusAtEnd(inputElement) {
  inputElement.focus();
  const len = inputElement.value.length;
  inputElement.setSelectionRange(len, len);
}

通过上述方法可以实现精确的游标控制,适用于表单校验、代码编辑器、实时预览等需要精细控制输入位置的场景。

标签: 游标js
分享给朋友:

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js 实现继承

js 实现继承

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

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 c…

js实现跑马灯

js实现跑马灯

实现跑马灯效果 使用HTML和JavaScript可以轻松实现跑马灯效果。以下是两种常见的实现方式: HTML结构 <div id="marquee"> <span>…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…