0

「eval」を含む ajaxmin を使用してスクリプトを縮小しているときにエラーが発生しました。以下のステートメントでは、「グリッドが未定義です」というエラーが表示されます。変数「grid」は、縮小後に別の名前に変更されています。「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 に答える