Javascript 获取当前线路&;此contenteditable元素中的行索引?
我有这样一个元素: <span contenteditable="">line 1 line 2 line 3 line 4 line 5 </span> 第1行 第2行 第3行 第4行 第5行Javascript 获取当前线路&;此contenteditable元素中的行索引?,javascript,html,Javascript,Html,我有这样一个元素: <span contenteditable="">line 1 line 2 line 3 line 4 line 5 </span> 第1行 第2行 第3行 第4行 第5行 假设用户正在编辑“第4行”。如何获取该contenteditable元素中的当前行和行索引(在插入符号位置)?以下是使用选择属性和字符串拆分计算偏移量的简单方法: <pre contenteditable="">line 1 line 2 line 3 line 4
假设用户正在编辑“第4行”。如何获取该contenteditable元素中的当前行和行索引(在插入符号位置)?以下是使用选择属性和字符串拆分计算偏移量的简单方法:
<pre contenteditable="">line 1
line 2
line 3
line 4
line 5
</pre>
<button onclick=getPos()>show pos</button>
<script>
function getPos() {
var sel = document.getSelection(),
nd = sel.anchorNode,
text = nd.textContent.slice(0, sel.focusOffset);
var line=text.split("\n").length;
var col=text.split("\n").pop().length;
alert("row:"+line+", col:"+col )
}
</script>
第1行
第2行
第3行
第4行
第5行
显示位置
函数getPos(){
var sel=document.getSelection(),
nd=选择固定节点,
text=nd.textContent.slice(0,选择焦点偏移量);
var line=text.split(“\n”).length;
var col=text.split(“\n”).pop().length;
警报(“行:“+line+”,列:“+col”)
}
强制性小提琴:
如果您的可编辑文件中有许多元素,您可能需要将
nd.textContent
替换为elmWysiwygContainer.textContent
,以获得所有文本的行,而不仅仅是“当前”节点。您能否对您的环境更具体一点?如果是javascript,您是否使用工具箱?你尝试过什么(用例子)?嗨,Stephen,我尝试过使用JS getRange,但它很复杂&并不总是有效。如果你知道一个更简单、纯JS的解决方案,那就太好了!真管用!谢谢丹达维斯!你给我留了一些头发:)-清理了你的例子-