2010-10-11 60 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呼叫较早线。