2012-12-13 59 views
0

我在使用包含'eval'的ajaxmin縮小腳本時面臨錯誤。在下面的語句中,我收到一個錯誤'grid is undefined'。縮小後,變量「網格」已更改爲其他名稱。我已經解決了這個問題,像'window.grid'一樣在窗口中存儲網格對象。但是有沒有其他方法可以解決這個問題?eval雖然縮小時出錯

 $(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(); 

感謝

+1

爲什麼'eval'?代碼中的目的是什麼? – elclanrs

+0

我需要將下拉列表的值添加到'jsontemplate'中。它成爲我的場景必須的一種。 – RGR

+0

發佈更多代碼,當前代碼沒有json,或下拉菜單。 – elclanrs

回答

1

一般情況下,你應該避免eval()可能的情況下。您可以更換該eval()行:

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

與此:

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

要通過計算字符串名稱或包含在一個可變的字符串訪問屬性,你可以使用[string here]語法代替點語法。

+0

太好了!感謝您的幫助:) @ jfriend00 – RGR