网格无法在Firefox中呈现

时间:2013-06-14 11:40:51

标签: javascript jquery editablegrid

我正在使用EditableGrid动态生成和操作列模型。根据计划,一切都已经消失,除了Firefox的一个兼容性问题(..不是IE -_-)。我明白这可能是某种Closure问题?我似乎无法解决这个问题。这是出了问题的地方:

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(表达);]

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

感谢epascarello,解决方法很简单,我将GetValidatorObject的方法移出了with (this)的范围。现在它适用于FF。当我进一步深入研究此事时,我发现avoid using 'with' keyword in JS非常有趣。这可能会清除灰色区域。