此功能可以帮助您添加一个EventListener(双击)到所需的div。
双击后,将禁用触发功能,并将所有内容添加到Input类型的元素中进行编辑。
如果用户按回车键或 FocusOut 元素将完成编辑,导致其所有值进入原始父级div并再次添加editThis函数。
注意:我建议为父级div添加一个最小宽度,这样它就可以双击了。
document.querySelector("div").addEventListener("dblclick", editThis);
function editThis() {
this.removeEventListener("dblclick", editThis)
var triggerElement = this
var content = this.textContent;
this.innerHTML = `<input type="text" id="editing" value="${content}">`;
document.getElementById("editing").focus();
document.getElementById("editing").addEventListener("keypress", (e) => {
if (e.key != "Enter") return;
var newValue = document.getElementById("editing").value;
triggerElement.innerHTML = "";
triggerElement.textContent = newValue;
triggerElement.addEventListener("dblclick", editThis);
})
document.getElementById("editing").addEventListener("focusout", (e) => {
var value = document.getElementById("editing").value;
triggerElement.innerHTML = "";
triggerElement.textContent = newValue;
triggerElement.addEventListener("dblclick", editThis);
})
}