2

我正在使用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(expression);]

有任何想法吗?

4

1 回答 1

0

多亏了epascarello,解决方法很简单,我将方法GetValidatorObject移出了with (this). 现在它适用于FF。当我进一步深入研究这个问题时,我发现在 JS 中避免使用 'with' 关键字真的很有趣。这可能会清除灰色区域。

于 2013-06-14T11:59:11.177 回答