[b][color=green][size=medium]核心:采用从n-1 到 0 递减遍历;
[/size][/color][/b][color=red]而不是采用从 0 到 n-1 递增遍历。[/color]
例子:
--
[/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();
}
--