我有一个看起来完全像这样的函数:
function exportSelectedToExcel(id)
{
var selectedRows = new Array();
//Retrieve selected items from the grid
selectedRows = grid.getGridParam('selarrrow');
//Always add the item in id, it doesn't matter if it's there twice.
selectedRows[selectedRows.length] = id;
//Build the url
var params = selectedRows.join("&id=");
var exportUrl = "/Export/SelectListExporters?id=" + params;
//Show the selection form
SelectionWindow.show(exportUrl, "#selectionForm", 400);
}
每次运行此函数时,数组都会增加至少一个项目(我添加到它的末尾)。这肯定意味着我在系统中的其他地方有另一个同名的数组,对吗?
google chrome或firefox中是否有任何方法可以找出该变量的位置?
编辑:整个项目中没有这样的变量,从视觉工作室内验证。
编辑2:这就是我所说的:http://www.secondpersonplural.ca/jqgriddocs/_2eb0fb79d.htm
编辑3:我已将代码更改为以下内容开头:
var retrievedRows = grid.getGridParam('selarrrow');
var selectedRows = retrievedRows.slice(0);
现在它的工作方式与预期一致。
答案 0 :(得分:1)
每次调用该函数时,数组都是:
所以:
每次运行此函数时,数组都会增加至少一个项目(我添加到它的末尾)。这肯定意味着我在系统中的其他地方有另一个同名的数组,对吗?
没有
由于您再次使用new Array()
覆盖数组(这使得使用selectedRows = grid.getGridParam('selarrrow');
创建数组只不过是浪费带宽和周期),因此很可能正在增长。
答案 1 :(得分:1)
首先,您的代码可以简化为:
var selectedRows = grid.getGridParam('selarrrow');
selectedRows.push(id);
看着这一点很明显,grid.getGridParam()
(无论它是什么)是导致问题的原因。调试它(可能通过打印selectedRows
)并进行调查。
selectedRows
在函数内部声明,因此即使有一个名为相同的全局变量,它也不会影响你的函数。
答案 2 :(得分:0)
Firefox的Firebug插件可能会帮助您: https://addons.mozilla.org/firefox/addon/firebug/
使用Firebug,您可以在网页中实时调试Javascript变量。