【问题标题】:create array object with $.each doesn't work用 $.each 创建数组对象不起作用
【发布时间】:2012-10-22 06:53:21
【问题描述】:

我正在尝试使用 JQGrid 创建本地表,在我更改数组之前一切正常,这是 Working 代码:

HTML 代码:

<div id=main style="width: 350px; height:200px;background-color:orange;">
<table id="grid"></table>
</div>

JS 代码

$(document).ready(
    function()
    {        
        jQuery("#grid").jqGrid({
         datatype: 'local',
         colNames:["User Name","Meet","Time"],
         height:"100%",
         autowidth: true,
         colModel :[
                    {name:"name",index:"name"},
                    {name:"to_meet",index:"to_meet"},
                    {name:"time",index:"time"}
                    ],
                    gridview: true,
                    viewrecords: true    });

    });

var mydata = [
              {name:"test",to_meet:"111",time:"0500"},
              {name:"test2",to_meet:"112",time:"0530"},
              {name:"test3",to_meet:"113",time:"0600"},
              {name:"test4",to_meet:"114",time:"0630"},
              {name:"test5",to_meet:"115",time:"0700"},
              {name:"test6",to_meet:"116",time:"0730"},
              {name:"test7",to_meet:"117",time:"0800"},
              {name:"test8",to_meet:"118",time:"0830"},
              {name:"test9",to_meet:"119",time:"0900"},
              {name:"test10",to_meet:"120",time:"0930"},
              {name:"test11",to_meet:"121",time:"1000"},
              {name:"test12",to_meet:"122",time:"1030"},
              {name:"test13",to_meet:"123",time:"1100"},
              {name:"test14",to_meet:"124",time:"1130"},
              {name:"test15",to_meet:"125",time:"1200"},
              {name:"test16",to_meet:"126",time:"1230"}
    ];
    console.log(mydata.length)
    for(var i=0; i<mydata.length;i++)
{

  alert(mydata);
        jQuery("#grid").jqGrid('addRowData',i+1,mydata[i]); ;

}

您也可以从这里运行它: http://jsfiddle.net/bYQn6/2/

现在,当我将 Obj 数组更改为:

$.each(myarray, function(i, val){
gridi.push('{name:"' + val.Name + '",to_meet:"' + val.meet + '",time:"' + val.time + '"}');
    });

var mydata = [gridi.toString()];

打印这个 'mydata' 看起来和上面的 'mydata' 完全一样,但它不起作用:(

我做错了什么??

谢谢!!!

【问题讨论】:

  • 你应该 1) 移动mydata的定义创建jqGrid; 2) 为mydata 的每个元素添加id 属性; 3) 将data: mydata 选项添加到jqGrid。 4) 你应该删除你调用addRowData的循环。顺便说一句,如果您的数据没有本机id,我建议您通过调用函数$.jgrid.randId() 来初始化项目的id 属性。以这种方式,网格的行肯定会获得 unique 值,即使页面上有多个网格也是如此。

标签: jquery jqgrid arrayobject


【解决方案1】:

你为什么要创建字符串并推入gridi?

您可以创建新对象,例如:

$.each(myarray, function(i, val){  
    gridi.push({'name': val.name, 'to_meet': val.meet, 'time':val.time});  
}  
});

【讨论】:

  • 谢谢!你说的对!更简单更好的方法!再次感谢您!
【解决方案2】:

将一个数组转换成另一个数组的正确方法是使用$.map

var mydata = $.map(myarray, function(val) {
    return {
        name: val.Name,
        to_meet: val.meet,
        time: val.time
    };
});

回调函数依次给原始数组的每个元素,函数的返回值累加成一个新的数组。

【讨论】:

  • 谢谢!现在我更了解jquary“地图”:),无论如何,它在我的代码中较低..再次感谢!
猜你喜欢
  • 1970-01-01
  • 2021-12-29
  • 2017-05-03
  • 1970-01-01
  • 2011-10-11
  • 2015-08-13
  • 1970-01-01
  • 2015-05-22
  • 1970-01-01
相关资源
最近更新 更多