为什么react的babel在IE上抛出重复对象错误jqgrid?

为什么react的babel在IE上抛出重复对象错误jqgrid?,jqgrid,Jqgrid,我已经加载了以下关于汽车年检的jqGrid表格,以获取维修数据 在chrome上,这看起来像这样: 这是作为react对象生成的,代码如下: HTML: 如何解决此问题?问题的原因:传递的列的多重格式化程序属性的使用请参见格式化程序:“复选框”,…,格式化程序:functioncellvalue,options,rowObject{…}。您应该从代码中删除或注释格式化程序:“复选框” 另外,我建议您: 切勿在循环中使用addRowData使用数据填充网格。您应该删除var i=0的行;我

我已经加载了以下关于汽车年检的jqGrid表格,以获取维修数据

在chrome上,这看起来像这样:

这是作为react对象生成的,代码如下:

HTML:


如何解决此问题?

问题的原因:传递的列的多重格式化程序属性的使用请参见格式化程序:“复选框”,…,格式化程序:functioncellvalue,options,rowObject{…}。您应该从代码中删除或注释格式化程序:“复选框”

另外,我建议您:

切勿在循环中使用addRowData使用数据填充网格。您应该删除var i=0的行;我
    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title></title>
        <link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/start/jquery-ui.css" />
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/free-jqgrid/4.13.6/css/ui.jqgrid.min.css" />
    </head>
    <body>

    <div id="divContainer"></div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.0.0/react.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.0.0/react-dom.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.34/browser.min.js"></script>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
    <script>
        $.jgrid = $.jgrid || {};
        $.jgrid.no_legacy_api = true;
        $.jgrid.useJSON = true;
    </script>

    <script src="https://rawgit.com/free-jqgrid/jqGrid/master/js/jquery.jqgrid.src.js"></script>

    <script type="text/babel" src="sample.jsx">
    </script>



    </body>
    </html>
var SampleGrid = React.createClass({
    componentDidMount:function(){
        this.gridLoad();
    },
    gridLoad:function(){
        var mydata = [
            { id: "1", test: "Engine checkup", teststart: "12/12/2016", testend: "12/30/2016", passed: true},
            { id: "2", test: "Electrical Checkup", teststart: "1/2/2017", testend: "1/3/2017", passed: false},
            { id: "3", test: "Chasis checkup", teststart: "1/4/2017", testend: "1/5/2017", passed: false},
            { id: "4", test: "Aerodynamics checkup", teststart: "1/6/2017", testend: "1/9/2017", passed: true},
            { id: "5", test: "Balance and stability checkup", teststart: "1/10/2017", testend: "1/12/2017", passed: true},
            { id: "6", test: "Report", teststart: "", testend: "", closed: false }
        ];

        jQuery("#grid100").jqGrid({
            colNames: ['test','passed','test started','test ended'],
            colModel: [
                {name: 'test', index: 'test', width: 220 },
                {name: 'passed', index: 'passed', width: 60, align: 'center', formatter: 'checkbox',
                    edittype: 'checkbox', editoptions: {value: 'Yes:No', defaultValue: 'Yes'}, formatoptions: { disabled: false},
                    cellattr: function(rowId, tv, rawObject, cm, rdata) {
                        if (Number(rowId) == 6) { return ' colspan="3"'  }},
                    formatter:function(cellvalue, options, rowObject)
                    {
                        if(rowObject.id==6)
                        {
                            return '<input type="text" id="txtnotes" ref="refnotes" />';
                        }
                        else
                        {
                            if(rowObject.passed===true)
                            {
                                return '<input type="checkbox"  id="cbPassed-'+ rowObject.id +'" checked/>';
                            }
                            else
                            {
                                return '<input type="checkbox"  id="cbPassed-'+rowObject.id+ '"  />';
                            }
                        }
                    }

                },
                {name: 'teststart', index: 'teststart', width: 75, formatter: 'string', sorttype: 'string', align: 'center',
                    cellattr: function(rowId, tv, rawObject, cm, rdata) {
                        if (Number(rowId) == 6) { return ' style="display:none;"'  }}},//return ' colspan="5"'
                {name: 'testend', index: 'testend', width: 75, formatter: 'string', sorttype: 'string', align: 'center',
                    cellattr: function(rowId, tv, rawObject, cm, rdata) {
                        if (Number(rowId) == 6) { return ' style="display:none;"' }}}

            ],
            rowNum: 10,
            rowList: [5, 10, 20],
            threeStateSort:true,
            gridview: true,
            rownumbers: false,
            autoencode: true,
            ignoreCase: true,
            sortname: "id",
            viewrecords: true,
            sortorder: "desc",
            shrinkToFit: false,

        });
        for(var i=0;i<=mydata.length;i++)
            jQuery("#grid100").jqGrid('addRowData',i+1,mydata[i]);

        jQuery("#grid100").jqGrid('setGroupHeaders', {
            useColSpanStyle: true,
            groupHeaders:[
                {startColumnName: 'passed', numberOfColumns: 3, titleText: 'Test Duration'}
            ]
        });
    },
    render:function(){
        return(<div id="gridContainer" ref="refContainer">
                <form>
                    <table id="grid100"></table>
                </form>
            </div>
        )
    }
})

ReactDOM.render(<SampleGrid />, document.getElementById('divContainer'));
 formatter:function(cellvalue, options, rowObject)
            {
                if(rowObject.id==6)
                {
                    return '<input type="text" id="txtnotes" ref="refnotes" />';
                }
                else
                {
                    if(rowObject.passed===true)
                    {
                        return '<input type="checkbox"  id="cbPassed-'+ rowObject.id +'" checked/>';
                    }
                    else
                    {
                        return '<input type="checkbox"  id="cbPassed-'+rowObject.id+ '"  />';
                    }
                }
            }