簡體   English   中英

NotFoundError:替換innerHTML時,DOM異常8

[英]NotFoundError: DOM Exception 8 when substituting innerHTML

我是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個控件來切換其可見性?

提前致謝。

這里的問題是onblur觸發了兩次,第二次,元素不存在,這導致了問題。 殺死事件

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() {
            this.onblur = function(){};
            var value = this.value;
            inline.editable = false;
            inline.innerHTML = value;
        }

        inline_editable.onkeypress = function(event) {
            if (event.keyCode == 13) {
                this.onblur();                    
            }
        }               
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM