2010-10-23 33 views
1

我面临使用js删除文本框的问题。我使用下文提到的代码无法删除使用JavaScript的文本框

<html> 

     <head> 
     <script language=javascript> 
     function addElement() { 
     var ni = document.getElementById('myDiv'); 
     var numi = document.getElementById('theValue'); 
     var num = (document.getElementById('theValue').value -1 + 2); 
     numi.value = num; 
     var newdiv = document.createElement('div'); 
     var divIdName = 'my'+num+'Div'; 
     newdiv.setAttribute('id',divIdName); 
     newdiv.innerHTML = '<input type=text id=' + num + ' value=' + num + '><a href="javascript:remove('+divIdName+')">Remove</a>'; 
     ni.appendChild(newdiv); 
     } 


     function remove(dId) { 
     var ni = document.getElementById('myDiv'); 
     ni.removeChild(dId); 
     } 

     </script> 
     </head> 

     <body> 

     <input type="hidden" value="0" id="theValue" /> 
     <p><a href="javascript:addElement()" >Add TextBox</a></p> 
     <div id="myDiv"></div> 

     </body> 
     </html> 

此代码是没有的html头做工精细DOCTYPE HTML PUBLIC “ - // W3C // DTD XHTML 1.0过渡// EN”“HTTP://! www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd“>如果我将此标题添加到代码删除链接不起作用。该代码有什么问题。

回答

1

方法.removeChild仅适用于父节点及其直接子节点。

相反,您可以使用更通用的删除功能,自动选择父级。

function remove(dId){ 
    var rem = document.getElementById(dId); 
    rem.parentNode.removeChild(rem); 
} 

编辑:

的另一个问题是删除锚点的innerHTML。它需要发送一个字符串,并试图发送一个变量。

newdiv.innerHTML = '<input type=text id=' + num + ' value=' + num + '><a href="javascript:test(\''+divIdName+'\')">Remove</a>'; 

现有代码在IE8和Chrome中工作,但在FF中失败。这个函数在所有这三个函数中都有效,但是为什么......我在查看萤火虫时显示了相同的DOM结构,或许其他人可以澄清?

+0

href =“javascript:remove('+ divIdName +')”;通过这个我调用函数remove()。根据你的建议我改变了删除函数仍然显示错误my1Div没有定义 – Meena 2010-10-23 12:12:00

+0

我的歉意,它滚动屏幕外,我没有看到它,当我撇去代码。我已经更新了我的答案,并为字符串/ var问题修复了另一个问题。 – WSkid 2010-10-23 12:13:51