我正在使用EditableGrid动态生成和操作列模型。一切都按照计划进行,除了Firefox的一个兼容性问题(…是的,不是IE -_-)。我理解这可能是某种结案的问题?我似乎无法解决这个问题。这就是出错的地方:
EditableGrid.prototype.initializeGrid = function () {
with (this) {
//apply cell validators and inforenderers in headers
var regex = [];
for (var count = 0; count < selectedColumnNames.length; ++count) {
var columnObj = findSelectedColumnObject(selectedColumnNames[count]);
//check if regex is provided
if (!(columnObj[0].validationRegex == "")) {
// add a cell validator
var expression = new RegExp(columnObj[0].validationRegex);
regex[columnObj[0].name] = new RegExp(columnObj[0].validationRegex);
var valObj = GetValidatorObject(expression);
addCellValidator(columnObj[0].name, valObj);
}
}
function GetValidatorObject(regObj){
var obj = {
isValid: function (value) {
return value == "" || (regObj.test(value));
}
};
return new CellValidator(obj);
}
}
抛出的异常是:
ReferenceError: GetValidatorObject未定义[var valObj =。GetValidatorObject(表达式);]
任何想法?
由于epascarello
,工作很简单,我将GetValidatorObject
的方法移出了with (this)
的范围。现在它与FF一起工作。当我进一步深入研究这个问题时,我发现在JS中避免使用"with"关键字真的很有趣。这可能会清除灰色区域。