JCAT 2009-05-03 10:18
浏览 186
已采纳

复选框选择模型中,删除多列时遍历Record数组的问题

为了在grid的复选框选择模型中删除选中的多行记录,的代码如下:

var records = _grid.getSelectionModel().getSelections();//得到选中的多行,返回值为Record数组

[color=red]//for (var i in records) { //为什么用这种方式遍历会出错呢???[/color]for (var i=0; i<records.length;i++){
//调用DWR方法删除数据
UserService.delUser(records.data);
}

之前用for (var i in records)对Record数组进行遍历出错了,检查以后发现这种遍历records除了取出Record对象外,最后还会取出个remove方法,所以传入DWR就出错了,后来改为for (var i=0; i<records.length;i++)遍历就正常了,请问这是什么原理呢?谁能详细说说

[b]问题补充:[/b]
哦?相当于Ext扩展了数组的功能,在里面加入了remove方法对吧?

那这两种遍历有什么区别吗?我JavaScript基础差,以为是一样的
for (var i=0; i<records.length;i++){
for (var i in records) {

这种能正常运行
for (var i=0; i<records.length;i++){
UserService.delUser(records[i].data);
}

这种报错,firebug发现遍历时i不是record对象而是数组的index值
for (var i in records){
UserService.delUser(i.data);
}

于是改成这种:记录可以正常删除了,但最后会传入个remove方法导致出错
for (var i in records){
UserService.delUser(records[i].data);
}

  • 写回答

3条回答 默认 最新

  • zhoujuan520 2009-05-03 10:27
    关注

    这个是Ext里面 Array的扩展代码
    [code="js"]
    /**

    • @class Array
      /
      Ext.applyIf(Array.prototype, {
      /
      *

      • Checks whether or not the specified object exists in the array.
      • @param {Object} o The object to check for
      • @return {Number} The index of o in the array (or -1 if it is not found) */ indexOf : function(o){ for (var i = 0, len = this.length; i < len; i++){ if(this[i] == o) return i; } return -1; },

      /**

      • Removes the specified object from the array. If the object is not found nothing happens.
      • @param {Object} o The object to remove
      • @return {Array} this array */ remove : function(o){ var index = this.indexOf(o); if(index != -1){ this.splice(index, 1); } return this; } }); [/code]
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码