当前位置: 代码迷 >> Web前端 >> Ext移除元素的步骤注意
  详细解决方案

Ext移除元素的步骤注意

热度:72   发布时间:2013-09-08 15:21:21.0
Ext移除元素的方法注意
核心:采用从n-1 到 0 递减遍历;
而不是采用从 0 到 n-1 递增遍历。

例子:
//【示例:】
	/**
	 * 移除反馈项*/
	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();
	}


















--
  相关解决方案