我是 js 开发的新手。我有以下代码:
<html>
<body>
<div><span id="inline">Click here to start editing</span></div>
<script>
var inline = document.getElementById("inline");
inline.onclick = function() {
if (!inline.editable) {
var text = inline.innerText;
inline.innerHTML = "<input type='text' id='inline-editable'>";
inline.editable = true;
var inline_editable = document.getElementById("inline-editable");
inline_editable.value = text;
inline_editable.onblur = function() {
var value = inline_editable.value;
inline.editable = false;
inline.innerHTML = value;
}
inline_editable.onkeypress = function(event) {
if (event.keyCode == 13) {
inline_editable.onblur();
}
}
}
}
</script>
</body>
</html>
其中显示了一些文本span
并允许内联编辑。当我在一个事件中完成编辑时,onblur
它工作得很好。但是,如果我想通过 Enter 终止编辑并使用相同的处理程序,则会NotFoundError: DOM Exception 8
在此行中出现错误:
inline.innerHTML = value;
尽管如此,一切都按我的预期工作。谁能帮我避免这个错误?
我假设发生这种情况是因为我inline-editable
在事件处理尚未完成时销毁了元素并且它可能想要调用onchange
。我应该一直有 2 个控件来切换它们的可见性吗?