javascript - 如何在特定位置的 contenteditable div 中添加/插入/更新文本?

标签 javascript jquery html contenteditable

HTML 代码如下所示

<div id="txtarea" contenteditable="true">Some text</div>

我必须在上述 div 的特定位置插入一些基于某些事件的新文本。 该事件调用函数 say updateDiv(txt, positon)。例如它说
updateDiv("更多",5);

所以div应该变成

<div id="txtarea" contenteditable="true">Some more text</div>

我尝试了很多 javascript 和 jquery,但似乎没有任何效果。

最佳答案

如果您的内容可编辑<div>始终由单个文本节点组成,这相对简单,您可以使用下面的代码。

var div = document.getElementById("txtarea");
var textNode = div.firstChild;
textNode.data = textNode.data.slice(0, 5) + "more " + textNode.data.slice(5);

否则,您需要阅读 DOM Ranges (请注意,IE < 9 不支持它们)并使用类似 this answer 的东西创建与内容中的字符索引对应的范围,然后使用 insertNode() .

var div = document.getElementById("txtarea");
var range = createRangeFromCharacterIndices(div, 5, 5);
range.insertNode(document.createTextNode("more "));

关于javascript - 如何在特定位置的 contenteditable div 中添加/插入/更新文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10315478/

相关文章:

javascript - 重复的 git 仓库

html - 样式化 HTML 电子邮件

javascript - 在 mouseup 上获取元素下方的 div 目标

javascript - 基于数组按 ids 组织列表 - jQuery/JS

jquery - 如何添加覆盖 DIV 以覆盖现有 DIV(使用 JQuery)?

html - 窄 DIV 上的图层图像

python - 如何覆盖所有模板的 flask_admin 样式?

javascript - 限制数组中的随机元素显示在图像标签中

javascript - 页面响应在 Jquery Mobile 中不起作用

javascript - 根据用户选择显示内容