无法获取属性'0'的值:对象在IE7中为null或未定义

时间:2013-01-04 05:57:12

标签: javascript highcharts

我在饼图中使用高图。 IE7中的脚本存在一个问题:

SCRIPT5007: Unable to get value of the property '0': object is null or undefined highcharts.js, line 10 character 3841

以下是脚本中的代码行:

if(typeof a[0]==="number")
    this.x=a[0],this.y=a[1];
else if(d==="object"&&typeof a.length!=="number") {
    if(u(this,a),this.options=a,a.dataLabels)c._hasPointLabels=!0
}
else if(typeof a[0]==="string")
    this.name=a[0],this.y=a[1];

如何解决此问题?

4 个答案:

答案 0 :(得分:4)

这也发生在我身上。调试之后,我最终发现问题是因为我在系列数据数组的最后一个元素之后有一个额外的逗号','。

可以在这个JSFiddle上找到问题的一个例子:http://jsfiddle.net/lewisdavidcole/Be43c/14/

错误仅出现在IE7和IE8中。它在IE9,Chrome和Firefox中运行良好,它们更加宽容。要解决此问题,请删除JSFIddle第266行的额外逗号,如下所示:

}, //TO FIX, REMOVE THE EXTRA COMMA HERE WHICH CREATES PROBLEMS IN IE7 and IE8

错误的发生是因为定义了一个类似于
的数组 var myArray = [1,2,3,4,5,]; 在IE7和IE8中创建一个问题,它应该永远不会以逗号结尾。

答案 1 :(得分:1)

这是一种常见的错误配置,因此我们在Highcharts中添加了一个修复程序。请参阅http://jsfiddle.net/highcharts/sw5rY/

series: [{
    data: [29.9, 71.5, 106.4, 129.2,],
    showInLegend: true
}]

答案 2 :(得分:0)

请提醒(a [0])并查看该数组元素是否具有某些值 如果没有,请在您的代码之前使用此条件: -

if(a.length>0){
//your code
}

答案 3 :(得分:0)

试试这个:

if(a.length>0){
if(typeof a[0]==="number")
    this.x=a[0],this.y=a[1];
else if(d==="object"&&typeof a.length!=="number") {
    if(u(this,a),this.options=a,a.dataLabels)c._hasPointLabels=!0
}
else if(typeof a[0]==="string")
    this.name=a[0],this.y=a[1];
}