2010-10-11 94 views
0

我在最後一個輸入框中添加了一堆輸入框和一個按鈕,以添加更多的輸入框。單擊添加按鈕時刪除按鈕時出現問題。刪除子元素時出錯

http://gist.github.com/621417

我在試圖刪除的子元素出現此錯誤。

錯誤:未捕獲的異常:[異常... 「組件返回失敗代碼:0x80004003(NS_ERROR_INVALID_POINTER)[nsIDOMHTMLDivElement.removeChild]」 nsresult: 「0x80004003(NS_ERROR_INVALID_POINTER)」 位置:「JS幀

回答

1

當你第一次創建addBtn元素,你只設置name財產。

您需要設置id屬性爲好。

所以,在createCreditBalanceInputs,修改代碼,加入這一行(addBtn.id = "addBtn";):

var addBtn = document.createElement('input'); 
addBtn.type = 'button'; 
addBtn.style.marginLeft = "20px"; 
addBtn.style.marginTop = "5px"; 
addBtn.name="addBtn"; 
addBtn.id = "addBtn"; 
addBtn.value="Add"; 

然後,你不需要每次都創建按鈕。您可以繼續追加它,並且DOM鉤子會自動將其從之前的位置移除。您可以更改addCreditBalance看起來更像是這樣的:

var addButton = document.getElementById('addBtn'); 
/* 
//Add button 
var addBtn = document.createElement('input'); 
addBtn.type = 'button'; 
addBtn.style.marginLeft = "20px"; 
addBtn.style.marginTop = "5px"; 
addBtn.name="addBtn"; 
addBtn.value="Add"; 
addBtn.addEventListener ('click',addCreditBalance,false); 
*/ 
container.appendChild(addButton); 

,並刪除在那裏你調用removeChild呼叫較早線。