我似乎在下面的函数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;" >✖</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">
,其中包含带有div
,item1
,item2
等的item3
个。 ..
在div
多个div
内,以组织代码的显示。
答案 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+') ';