1

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>
4

2 に答える 2

0

別の配列を作成し、forloop を使用してこの問題を回避しました。Adam が提案したように、 $.each 関数も使用できたはずです。

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);

                    }
                }
            }
        }
于 2013-09-26T14:28:52.297 に答える