在属性contenteditable为true的元素中有文本节点和html节点,点击改元素时获取光标所在位置前childNodes的长度
时间: 2024-03-20 09:45:24 浏览: 59
好的,针对你的问题,我可以提供以下代码来获取光标所在位置前childNodes的长度:
```javascript
// 获取当前光标对象
var selection = window.getSelection();
// 获取当前光标所在的节点对象
var node = selection.anchorNode;
// 判断当前光标所在的节点是否为文本节点
if (node.nodeType === Node.TEXT_NODE) {
// 获取光标所在位置前面所有的子节点
var childNodes = node.parentNode.childNodes;
// 获取当前光标在文本节点中的偏移量
var offset = selection.anchorOffset;
// 遍历子节点,计算光标所在位置前的子节点数量
var count = 0;
for (var i = 0; i < childNodes.length; i++) {
var childNode = childNodes[i];
if (childNode === node) {
count += offset;
break;
} else {
count += childNode.textContent.length;
}
}
console.log('光标所在位置前childNodes的长度:', count);
}
```
这段代码可以用于处理属性 `contenteditable` 为 true 的元素中的内容,包括文本和 HTML 节点,并且可以获取光标所在位置前的子节点数量。
阅读全文