JS HighCharts.js代码

时间:2016-07-18 15:34:57

标签: javascript jquery highcharts

我在使用以下代码时遇到了一些问题:

//The Code:

    var data = [];
    for (var i = 0; i < mydata.length; i++) {       //looping through data received
        var obj = mydata[i];      //current obj in loop
        var newObj = {      //creating new obj with same structure as the 'data' that works
            name: obj.name,
            y: obj.subhere.subhere1,
            id: i   

        };

        data.push(newObj);      //pushing each object into the data array
    }


//THE DATA:
var data = [{ name: 'Name 1', y: 20, id: 0 },{ name: 'Name 2', y: 10, id: 1 },{ name: 'Name 3', y: 10, id: 2 }];


//THE CHART CODE:
chart = new Highcharts.Chart({

   series:[
      {
         "data": data,
          type: 'pie',
          animation: false,
          point:{
              events:{
                  click: function (event) {
                      //alert(this.id);
                  }


              }
          }          
      }
   ],
   "chart":{
      "renderTo":"container"
   },
});

//The above with create a pie chart with 3 names

//The Data

var mydata =[{

    "001":{

        "name":"Name 1",
        "subhere":{
            "subhere1":2
        }

    },
    "002":{

        "name":"Name 2",
        "subhere":{
            "subhere1":20
        }

    },


}];

控制台给出了以下错误:

TypeError: obj.subhere is undefined y: obj.subhere.subhere1,

我可以看到subhere.subhere1名称确实存在,所以理论上它不应该给我一个错误,对吗?

我如何解决这个问题......有什么想法吗?

2 个答案:

答案 0 :(得分:1)

myData看起来格式不正确。在前一个括号之后有一个额外的逗号:

},

}];

您可以遍历对象属性:

var data = [];
for (var i = 0; i < mydata.length; i++) {       //looping through data received
    var obj = mydata[i];      //current obj in loop
    for(var key in obj){
      var newObj = {      //creating new obj with same structure as the 'data' that works
          name: obj[key].name,
          y: obj[key].subhere.subhere1,
          id: i   

      };
    data.push(newObj);      //pushing each object
  }
}

答案 1 :(得分:0)

要使用现有代码,您可以将mydata的定义更改为:

var mydata =[

    {

        "name":"Name 1",
        "subhere":{
            "subhere1":2
        }

    },
    {

        "name":"Name 2",
        "subhere":{
            "subhere1":20
        }

    }


];