阅读:9603回复:7
如何彻底删除HTML控件?
element是一个input对象,
用element.parentNode.removeChild(element)移除对象可行。 但是如果之前访问过此对象,即使移除这个对象,但它并非真正移除, 还寄存在内存里,用alert(element)显示“[object HTMLInputElement]” 这使我非常苦恼,请问有什么彻底删除的方法? |
|
1楼#
发布于:2008-06-02 13:45
创建element时不要使用var进行变量捕捉,让element附在global域上;
删除时,用delete element;操作。 |
|
2楼#
发布于:2008-06-02 13:45
wushi777:创建element时不要使用var进行变量捕捉,让element附在global域上; 不好意思,我看得不太懂,我把代码贴上来,请问如何改进? <script language="javascript"> function appendElement() { var o = document.createElement("DIV"); o.innerHTML = '新增加的Text:<input type="text" name="input1" value="input1">'; document.getElementById('div').appendChild(o); } function readElement() { var element = document.form1.input1; if(element) alert(element.value); } function deleteElement() { var element = document.form1.input1; if(element) element.parentNode.removeChild(element); } </script> <form name="form1"> <div id='div'></div> <input type="button" value="创建input1" onclick="appendElement();"> <input type="button" value="访问input1" onclick="readElement();"> <input type="button" value="删除input1" onclick="deleteElement();"><BR> 如果对象在delete之前被访问过,它就会寄存在内存里,即使删除,还能访问。 请用FireFox测试。<BR> 如何彻底删除? </form> |
|
3楼#
发布于:2008-06-02 13:45
你可以这样,
function deleteElement() { if(document.form1.input1) document.form1.input1.parentNode.removeChild( document.form1.input1); } 或者, function readElement() { element = document.form1.input1;//不要用var element; if(element) element.parentNode.removeChild(element); alert(delete element); } |
|
4楼#
发布于:2008-06-02 13:45
还是不行哦。
你点“创建input1” 再点“访问input1” 再点“删除input1” 再点“访问input1”试试 ![]() ![]() <script language="javascript"> function appendElement() { var o = document.createElement("DIV"); o.innerHTML = '新增加的Text:<input type="text" name="input1" value="input1" isDelete="0">'; document.getElementById('div').appendChild(o); } function readElement() { element = document.form1.input1; if(element) alert("value="+element.value); delete element; } function deleteElement() { if(document.form1.input1) { document.form1.input1.parentNode.removeChild(document.form1.input1); } } </script> <form name="form1"> <div id='div'></div> <input type="button" value="创建input1" onclick="appendElement();"> <input type="button" value="访问input1" onclick="readElement();"> <input type="button" value="删除input1" onclick="deleteElement();"> </form> |
|
5楼#
发布于:2008-06-02 13:45
不清楚为什么会这样,像是一个bug。 所以如果想检测一个元素是否存在,建议还是用document.getElementById()的方法。
|
|
6楼#
发布于:2008-06-02 13:45
天呐,FireFox怎么这样啊,为什么不改改呢?
苹果的Safari也是这样~~~ |
|
7楼#
发布于:2008-06-02 13:45
老实说,document.form1.input1这种方式能够在firefox上运行已经让我很奇怪了。 我印象里,这种情况应该总是要报错了。
|
|