Ext移除元素的方法注意

[b][color=green][size=medium]核心:采用从n-1 到 0 递减遍历;
[/size][/color][/b][color=red]而不是采用从 0 到 n-1 递增遍历。[/color]

例子:
//【示例:】
/**
* 移除反馈项*/
function deleteNewFeedbackItem(){
var io=Ext.getCmp('chekBoxesId');
var i = io.items.length;
// alert(i);
//判断是否选中至少一个。
var nullCountNum = 0;
for(var n=0;n<i;n++){
if(!io.items.items[n].getValue()){
nullCountNum ++;
}
}
//如果一个都没选中,则返回。
if(nullCountNum == i){
Ext.MessageBox.alert("提示:","请选择要删除的反馈项!");
return;
}

/**移除选中的项。
* 方法:关于在一次选中多个的情况下,采用items[n]从n到0,递减遍历。
* 说明:如果采用从0到n,递增遍历,则会报错。
* 原因:由于items移除元素后,后面的元素会自动向前补齐,
* 这样后面的被选中的元素的索引会-1,但本次循环中的迭代值+1,
* 因此无法指向已经向前移动了的元素,从而导致被选中的元素不能
* 被删除。而当迭代值继续增加时,会出现索引越界的错误。
* 即使外层再套一层循环也无效,循环已中断。
*/
for(var n=i-1;n>=0;n--){
if(io.items.items[n].getValue()==true){
io.remove(io.items.items[n]);
}
}
io.doLayout();
}



--
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值