【发布时间】:2020-12-04 22:55:03
【问题描述】:
我有一个按钮,可以将span 添加到内容可编辑的div。我想专注于span,以便用户可以更改它的内容。实际上,这段代码是一个所见即所得的编辑器,因此用户可以在可编辑的div 中键入一些文本,然后按一个按钮来键入突出显示的文本。
这是我的代码:
$("#btn").click(function () {
var newSpan = document.createElement("span");
newSpan.classList.add("highlight");
newSpan.innerHTML = ""; // the span must be empty
var myDiv = document.getElementById("editable-div");
myDiv.appendChild(newSpan);
newSpan.focus();
// here I expect to be able to change the content of the newSpan,
// but I'm still inside the myDiv element.
// <div id="editable-div" contenteditable="true">
// <span class="highlight">
// I WANT TO BE HERE AFTER APPENDING THE SPAN
// </span>
// </div>
});
CSS:
.highlight {
background-color: yellow;
}
HTML:
<div id="editable-div" contenteditable="true"></div>
<button id="btn">Highlight</button>
注意:如果跨度不为空,则代码可以正常工作,但我想附加一个空跨度。
【问题讨论】:
-
用户将如何在其中输入内容?您需要创建文本输入吗?
-
不,我希望用户更改跨度的内容。但是添加span后,用户只能更改div元素的内容。
标签: javascript jquery contenteditable appendchild