2014-02-05 42 views
1

我似乎有一個函數removelink(id),下面,它被稱爲AFTER項目被添加到列表中,具有onclick=""行爲不斷的錯誤。每次調用該函數時,都會拋出異常:HTML removeChild()拋出一個未知的異常

"NotFoundError: Failed to execute removeChild' on 'Node': The node to be removed is not a child of this node."

我知道,通常這個錯誤會給出答案。但是,我仔細檢查了removeChild()正在呼叫正確的父母分區和正確的孩子。但是,它直接導致了錯誤。

我對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">了啓動,其中包含了div s的IDS item1item2item3,等...

裏面那些div S比div s到組織顯示代碼。

回答

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+') '; 
+0

真棒,刪除該異常,但現在我得到另一個異常,它停止功能renumbe r()被調用: ReferenceError:賦值中無效的左側 – RyanH

+0

@ user3272700:再次檢查答案並修復代碼。 –

+0

謝謝各位工作。非常感謝你。 – RyanH