jqGrid(’getGridParam’,’colNames’)奇怪的行为

使用此函数返回网格的列名称工作正常。 拼接它返回的数组时会出现问题。

网格包含一个复选框作为第一列,所以我想从数组中删除它。 这是代码。

var columnTitles = $(table).getGridParam('colNames'); columnTitles.splice(0,1); 

当我多次使用此function(它导出到excel)时出现问题。 下次导出时,getGridParam函数实际返回拼接的列名数组,而不是实际的列名。 就好像它是通过引用或其他东西传递的。

进一步certificate它正在这样做,我不只是有一个全局变量或其他东西的问题……如果我执行以下代码:

 var columnTitles = $(table).getGridParam('colNames'); var columnTitles2 = $(table).getGridParam('colNames'); columnTitles.splice(0,1); console.log(columnTitles2); 

columnTitles2的值作为拼接数组返回。 这可能是完全愚蠢的事情,但我在这里错过了什么?

getGridParam方法返回jqGrid使用的内部参数的引用。 例如,如果使用数组或对象, colNamescolNames ,则应该小心。 你需要为你的目的修改数组,但你不想更改jqGrid中的值,你应该首先复制数组,然后修改副本:

 var columnTitles = $(table).jqGrid("getGridParam", "colNames").slice(); columnTitles.splice(0,1); 

我使用slice来制作colNames使用的内部colNames的副本。