HTML removeChild()抛出一个未知异常

时间:2014-02-05 16:16:34

标签: javascript html exception

我似乎在下面的函数removelink(id)中出现了一个常量错误,该函数在项目添加到列表后调用,行为为onclick=""。每次调用该函数时,都会抛出异常:

  

“NotFoundError:无法在'Node'上执行removeChild':节点为   被删除不是这个节点的孩子。“

我知道,通常这个错误会给出答案。但是,我仔细检查了removeChild()是否在正确的父div和正确的孩子中进行了调用。但是,它直接导致错误。

我对JS很缺乏经验。任何帮助表示赞赏。

function removelink(id) {
    var itemname = 'item' + id;
    if(confirm("Are you sure you want to remove this item from the list?" + itemname) == true) {
        try {
            CKEDITOR.remove('leditor'+ id);
            document.getElementById('listeditor').removeChild(document.getElementById(itemname));
            x--;
            limit++;
            document.getElementById("btnadditem") = '+ Add an item('+limit+') ';
            renumber();
            event.preventDefault();
        }
        catch(i) {
            alert("Error Thrown: " + i);
            return false;
        }
    }
    return false;
}

/*
*(Purpose: Creates a new item based on the numbering of var x, an int starting at 0, and initiates the textbox + drawing)
*/

function addNewItem() {
    if(limit >= 1){
        var divcode = document.createElement();

        divcode.innerHTML = '<div id="item'+ x +'"><div class="input-group"><span id="itemNumid'+ x +'" class="input-group-addon">'+ x +'</span><input type="email" class="form-control" name="header'+ x +'" placeholder="Item header"s tyle="border-bottom:none;" ><span class="input-group-addon" style="padding: 0px 0px;" ><button  class="btn btn-danger btn-xs" id="btnremove'+x+'" onclick="removelink('+x+'); return false;" style="height: 41px; width: 41px;" >&#10006</button></span></div><textarea  name="editor'+ x +'" id="leditor'+ x +'"  class="form-control ckeditor" rows="8" style="resize:none;border-top:none;" placeholder="Item Content"></textarea><hr /></div>';

        document.getElementById("listeditor").appendChild(divcode); 

        //CKEDITOR.inline( document.getElementById( 'editable' ) )
        CKEDITOR.replace('leditor'+ x);
        //createEditor(x);
        //$( 'textarea#leditor' + x ).ckeditor();
        //document.getElementById('leditor' + x).className += " ckeditor"
        x++;
        limit--;
        if(limit != 0) {
            document.getElementById("btnadditem").innerHTML = " + Add an item("+limit+") ";
        }
        else {
            document.getElementById("btnadditem").innerHTML = "Limit Reached";
            document.getElementById("btnadditem").className += "disabled";
        }
    }
    return false;
}

在HTML中,我有一个加载的<div id ="listeditor">,其中包含带有divitem1item2等的item3个。 ..

div多个div内,以组织代码的显示。

1 个答案:

答案 0 :(得分:1)

用以下内容替换删除孩子的行:

var itemNode = document.getElementById(itemname);
itemNode.parentNode.removeChild(itemNode);

代码中的另一个问题是:

document.getElementById("btnadditem") = '+ Add an item('+limit+') ';

你不能用字符串覆盖html节点,你可能想这样做:

document.getElementById("btnadditem").innerHTML = '+ Add an item('+limit+') ';