真假删除

处理多个提交选项时,为了让用户可以自行删除选项, 用javascript处理了一下


function delfile(f_no){
if(confirm('确认删除所选择订单?')){

document.getElementById('f_'+f_no).removeChild;
document.getElementById('f_'+f_no).style.display ='none';
}
}


事实上这样并没有真正的删除表单项,提交以后还是删除以前的数量

removeChild只是从Dom树中移除。这个变量还是存在的,要过一段时间才会被浏览器回收。

二直接用 tb.deleteRow(i); 这里是真的删除了 //tb是个table


Ext的做法

removeNode : isIE ? function(){   
var d;
return function(n){
if(n && n.tagName != 'BODY'){
d = d || document.createElement('div');
d.appendChild(n);
d.innerHTML = '';
}
}
}() : function(n){
if(n && n.parentNode && n.tagName != 'BODY'){
n.parentNode.removeChild(n);
}
},

ie的问题就是,不会回收被remove的node,虽然这个node已经没有任何js对象在直接或间接的引用到它。对应的解决方案就是把node扔到一个div里(嘿嘿,这个div就是ie的垃圾回收箱),然后把其innerHTML清空。

当然,按照MS的人的说法,这个不是一个真正的memory leak,因为你刷新页面时是会释放这些对象的。但是ajax程序如果是长时间驻留在一个页面,并且动态增删许多节点,那累积起来的结果确实够惨。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值