把你的eval之前的data贴出来呀

解决方案 »

  1.   

    那种情况是存在的,data数组中并不是只有三个元素,只是你没看到而已,另一个元素的值为undefined。你是用alert(data[i]),输出一下就能知道了。var data = new Array(1);
    data.push(0);
    data.push(1);
    data.push(2);
    alert(data.length);
      

  2.   


    #2这样写更加明了一些
    var data = []
    data[1]=1
    data[2]=2
    data[3]=3
    alert(data.length);//4,下标为0的数组项没有赋值,但是是存在的
    data[10]=10
    alert(data.length);//11,3~10之间的下标自动生成,数组length属性也增加
      

  3.   

    lz的data[3]为undefined也可能会出现,如下var data = new Array(4);
    for(var i = 0; i < 3; i++){
        data[i] = i;
    }
    alert(data.length);
    alert(data[3]);
      

  4.   

    可问题是我的数组不是new 出来的, 只是用json 字符解析的出来的
      

  5.   


    让你把你那个解析前的data代码贴出来呀。我都帮你着急问问题,丢示例出来,这应该是基本流程吧。。
      

  6.   

    我知道怎么回事了, 下面是我的json 数据:
    [
        { name: '关羽', mac: 'ffds', state: 1, x: 354, y: 524, z: 533, area: '10' },
        { name: '张飞', mac: 'ffds', state: 1, x: 154, y: 724, z: 133, area: '10' },
        { name: '赵云', mac: 'ffds', state: 1, x: 624, y: 324, z: 343, area: '10' },
    ]由于数组最后一项的逗号没有去掉,用eval解析的时候, chrome 和 firefox 会忽略掉最后的逗号, IE8则会认为逗号之后还有个undefined,IE6会报错