0

我在使用包含“eval”的 ajaxmin 缩小脚本时遇到错误。在下面的语句中,我收到错误“网格未定义”。缩小后,变量“网格”已更改为其他名称。我已经解决了将网格对象存储在像“window.grid”这样的窗口中的问题。但是还有其他方法可以解决这个问题吗?

        $(form).html($("#" + this._gridID + "_bulkEditTemplate #" + colName + "_bulkEdit").html());           
        $(target).append(form);
        var grid = $find(this._gridID);
        var optionsObj = eval("grid.jsonModeMgr._jsonDataAndOption." + colName + "_Options");
        $("#" + this._gridID + " #" + colName).html($($("#" + this._gridID + "_bulkEditTemplate").tmpl(optionsObj).find('#' + colName + ' option')));
        var editElement = $("#" + this._gridID + " #" + colName);
        $(editElement).val(this.currentCellValue == null ? "" : this.currentCellValue);
        $(editElement).val(this.currentCellValue).focus();
        $(editElement)[0].focus();

谢谢

4

1 回答 1

1

一般来说,你应该eval()尽可能避免。您可以替换此eval()行:

var optionsObj = eval("grid.jsonModeMgr._jsonDataAndOption." + colName + "_Options");

有了这个:

var optionsObj = grid.jsonModeMgr._jsonDataAndOption[colName + "_Options"];

要通过计算的字符串名称或包含在变量中的字符串访问属性,可以使用[string here]语法而不是点语法。

于 2012-12-13T06:20:59.310 回答