为了在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);
}