JQuery脚本在IE8中失败&引用;对象没有';“不支持此属性或方法”兼容性问题?

JQuery脚本在IE8中失败&引用;对象没有';“不支持此属性或方法”兼容性问题?,jquery,internet-explorer-8,Jquery,Internet Explorer 8,我有以下带有jquery脚本的html页面。 IE8中的脚本在以下行失败: var dataCopy = JSONObject[event]; for (data in dataCopy) 我收到的错误消息是:“对象不支持此属性或方法”。同样的代码在Chrome和Firefox中运行良好。任何建议都很好。我试图得到所有不同的年份值 !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht

我有以下带有jquery脚本的html页面。 IE8中的脚本在以下行失败:

var dataCopy = JSONObject[event];
for (data in dataCopy)
我收到的错误消息是:“对象不支持此属性或方法”。同样的代码在Chrome和Firefox中运行良好。任何建议都很好。我试图得到所有不同的年份值

 !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
        <title>
          Google Visualization API Sample
        </title>
        <script type="text/javascript" src="http://www.google.com/jsapi"></script>
        <script src="..\Scripts\jquery-1.7.1.js" type="text/javascript"></script>
        <script type="text/javascript">
          google.load('visualization', '1', {packages: ['corechart', 'geochart', 'table'] });
        </script>
        <script type="text/javascript">
          function drawVisualization() {



            var JSONObject = {
                    cols: [{
                        id: 'Year', label: 'Year', type: 'string'
                    },{
                        id: 'data1', label: 'col2', type: 'number'
                    },{
                        id: 'data2', label: 'col3', type: 'number'
                    }],
                    rows: [{
                        c:[{v: '2000'}, {v: null}, {v: 3}]
                    },{
                        c:[{v: '2001'}, {v: 8}, {v:3 }]
                    },{
                        c:[{v: '2004'}, {v: 2.1244322}, {v: 4}]
                    }
                ]};

            var yearArray = [];

            for (var event in JSONObject) {
                var dataCopy = JSONObject[event];
                for (data in dataCopy) {
                    var mainData = dataCopy[data];
                    for (key in mainData) {
                        if (key.match(/c/)) {
                            var row = mainData[key];
                                yearArray.push(row[0].v);

                        }
                    }
                }
            }

            alert(yearArray.length);
}
</script>
!DOCTYPE html PUBLIC“-//W3C//DTD XHTML 1.0 Strict//EN”http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
谷歌可视化API示例
load('visualization','1',{packages:['corechart','geogorart','table']});
函数drawVisualization(){
var JSONObject={
科尔斯:[{
id:'Year',标签:'Year',类型:'string'
},{
id:'data1',标签:'col2',类型:'number'
},{
id:'data2',标签:'col3',类型:'number'
}],
行:[{
c:[{v:'2000'},{v:null},{v:3}]
},{
c:[{v:'2001'},{v:8},{v:3}]
},{
c:[{v:'2004'},{v:2.1244322},{v:4}]
}
]};
var yearray=[];
for(JSONObject中的var事件){
var dataCopy=JSONObject[event];
用于(数据副本中的数据){
var mainData=dataCopy[data];
用于(输入主数据){
if(key.match(/c/)){
var行=主数据[键];
yearray.push(行[0].v);
}
}
}
}
警报(yearray.length);
}

IE8以外的浏览器支持使用for…in迭代方法对数组进行迭代。IE8不支持——它只支持以这种方式对对象进行迭代


我看到您的页面上有jQuery,所以请查看
$。每个
-它将在对象和数组上执行您希望它执行的操作。

我创建了另一个数组并使用forloop来解决此问题。就像Adam建议的那样,我也可以使用$。每个函数

var dataCopy = [];

        for (var event in JSONObject) {
            dataCopy = JSONObject[event];
            for (var k=0; k < dataCopy.length; k = k+1) {
                var mainData = dataCopy[k];
                for (key in mainData) {
                    if (key.match(/c/)) {
                        var row = mainData[key];
                            yearArray.push(row[0].v);

                    }
                }
            }
        }
var-dataCopy=[];
for(JSONObject中的var事件){
dataCopy=JSONObject[event];
对于(变量k=0;k
dataCopy
不是一个对象
var JSONObject=…
JSONObject
不是,它是一个JavaScript对象。JSON是一种文本的非源代码符号。谢谢!我也尝试过使用一个简单的for循环,它也能工作。”IE8以外的浏览器支持使用for…in…对数组进行迭代,IE8不…
for in
不循环数组条目。它循环遍历对象的可枚举属性。它适用于所有标准的JavaScript数组(即使在IE8、IE7和IE6中),但可能不适用于主机提供的数组,因为它们不是真正的JavaScript对象<代码>在任何情况下都适用于