js中关于{}中对象表达式结尾多余逗号在不同的环境下产生的异常排查

用的同样的easyui和jquery版本,家里的Jdk为1.8.0,公司电脑用的jdk也是1.8.0,区别只是小版本比如201 203这样的不同,在家里电脑上跑的好好的easyui datagrid代码,复制到公司电脑上datagrid就不能正常工作了,完全不能显示。折腾了很久,终于找到了原因。原因就是js表达式中的{}中的对象结尾多出的一个","逗号导致异常。(当然这个异常只是表现在Eclipse内置浏览器调试的时候显示异常,如果在Eclipse中跑起来后,把URL放到IE或360等其它浏览器中打开是完全正常的,说明JS{}对象表达式末尾有多余的逗号大部分情况下是可以正常运行的

比如:下面的JS代码在家里的电脑跑的灰常正常

	<table id="dg"></table>
	<script>
    $('#dg').datagrid({
        title: 'Basic DataGrid',       //表格标题
        width:720,            //表格宽度
        pagination: true,     //开启分页
        pageSize: 10,         //分页大小
        pageNumber:1,         //第几页显示(默认第一页,可以省略)
        pageList: [10, 20, 30], //设置每页记录条数的列表 
        columns: [[                //添加列
            {
                field: 'itemid',  //绑定数据源ID
                width: 80,
                title: 'itemid',        
            },
            {
                field: 'productid',
                width: 80,
                title: 'productid',
            },
            {
                field: 'listprice', 
                width: 80,
                title: 'listprice',   
            },
            {
                field: 'unitcost',
                width: 80,
                title: 'unitcost',
            },
            {
                field: 'attr1',  
                width: 250,
                title: 'attr1',        
            },
            {
                field: 'status',
                width: 80,
                title: 'status',
            },
        ]],
    });
    
    
    $('#dg').datagrid({ loadFilter: pagerFilter }).datagrid({
        url: 'easyui/demo/datagrid/datagrid_data1.json'     //加载数据
    });
    
    //修改分页栏显示中文样式,这个要放在loadFilter加载数据后面,否则不能显示
    var p = $('#dg').datagrid('getPager');
    $(p).pagination({
        beforePageText: '第',//页数文本框前显示的汉字 
        afterPageText: '页    共 {pages} 页',
        displayMsg: '第{from}到{to}条,共{total}条',
    });
</script>

但是拿到公司电脑上相同jdk,相同easyui,jquery就跑不起来了。区别只是电脑系统家里win7,公司win10

经过反复排查发现问题出在对象表达式{}最后的那个逗号,

在家里的电脑上,像下面这样写是可以的,可以看到多了三个逗号

 {
                field: 'status',
                width: 80,
                title: 'status',
            },
        ]],
    });

但在公司电脑上必须要去掉,否则完全无法初始化Datagrid

公司电脑上修改为下面这样的运行OK,当然标准也应该是这样的

	<table id="dg"></table>
	<script>
    $('#dg').datagrid({
        title: 'Basic DataGrid',       //表格标题
        width:720,            //表格宽度
        pagination: true,     //开启分页
        pageSize: 10,         //分页大小
        pageNumber:1,         //第几页显示(默认第一页,可以省略)
        pageList: [10, 20, 30], //设置每页记录条数的列表 
        columns: [[                //添加列
            {
                field: 'itemid',  //绑定数据源ID
                width: 80,
                title: 'itemid'        
            },
            {
                field: 'productid',
                width: 80,
                title: 'productid'
            },
            {
                field: 'listprice', 
                width: 80,
                title: 'listprice'   
            },
            {
                field: 'unitcost',
                width: 80,
                title: 'unitcost'
            },
            {
                field: 'attr1',  
                width: 250,
                title: 'attr1'        
            },
            {
                field: 'status',
                width: 80,
                title: 'status'
            }
        ]]
    });
    
    
    $('#dg').datagrid({ loadFilter: pagerFilter }).datagrid({
        url: 'easyui/demo/datagrid/datagrid_data1.json'     //加载数据
    });
    
    //修改分页栏显示中文样式,这个要放在loadFilter加载数据后面,否则不能显示
    var p = $('#dg').datagrid('getPager');
    $(p).pagination({
        beforePageText: '第',//页数文本框前显示的汉字 
        afterPageText: '页    共 {pages} 页',
        displayMsg: '第{from}到{to}条,共{total}条'
    });
</script>

一共去掉了9个{}或表达式结尾多余的逗号就正常了。

 

posted @ 2022-10-04 00:14  IT情深  阅读(85)  评论(0编辑  收藏  举报