【发布时间】:2015-12-25 16:35:40
【问题描述】:
我有一个 contenteditable div,在这个 div 里面,我有 3 个节点
<div id="editable" contenteditable="true"><span>dear</span>world<span>hello</span></div>
在这种情况下,如果我们使用下面的代码:
console.log(document.getElementById('editable').childNodes)
我们会有类似[span, text, span] 的东西。如何获取正在编辑的节点的索引。例如,如果用户正在编辑单词dear,我应该得到索引“0”,因为它是第一个节点,如果用户正在编辑单词hello,我应该得到索引“@987654328 @"
我有一个函数可以返回我正在编辑的实际节点,但我不确定是否会有所帮助。见jsfiddle。
【问题讨论】:
-
您快到了,使用您的 getEditingNode 函数始终返回 parentNode 而不是返回文本节点。然后遍历所有 document.getElementById('editable').childNodes 并与返回的节点进行比较以获得索引
-
@AlexBarroso,如果我们总是返回parentNode,当用户编辑单词“world”(这是一个文本节点)时,那么父节点将是id为“editable”的div,这是不可取的,对吧?
-
嗯,是的,您需要做的是尝试返回作为可编辑节点子节点的父元素。
-
如果
world这个词被编辑了会发生什么? -
@adeneo 它应该返回 1 作为索引,因为它是第二个节点
标签: javascript jquery html contenteditable