Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取当前线路&;此contenteditable元素中的行索引?_Javascript_Html - Fatal编程技术网

Javascript 获取当前线路&;此contenteditable元素中的行索引?

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

我有这样一个元素:

<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
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的解决方案,那就太好了!真管用!谢谢丹达维斯!你给我留了一些头发:)-清理了你的例子-