Javascript:如何根据输入参数访问元素?

时间:2011-02-06 09:30:06

标签: javascript jqgrid

框架:Javascript,Jqgrid

我有以下的javascript函数。它接收字段数组和Jqgrid。它将字段的required属性设置为true。我想传递一个输入字符串'Required',并让该函数将元素'Required'设置为true。这样,我可以重用此函数来设置'Integer','Email'属性等。我正在寻找类似于Javascript中Java反射的功能。如果Javascript中有这样的方法可以指导我吗?

        function setRequiredFields(fields, grid){
        for (var i = 0; i < fields.length; i++) {
            var colProp = $(grid).getColProp(fields[i]);                
            getColPropEditRules(colProp).Required = true;
            getColPropFormOptions(colProp).elmsuffix = " *";                
            $(grid).setColProp(fields[i], colProp);
        }
    }

2 个答案:

答案 0 :(得分:0)

如果我正确理解了这个问题,你只需要“数组”语法:

function setRequiredFields(fields, grid, propertyName){
    for (var i = 0; i < fields.length; i++) {
        var colProp = $(grid).getColProp(fields[i]);                
        getColPropEditRules(colProp) [propertyName] = true;
        getColPropFormOptions(colProp).elmsuffix = " *";                
        $(grid).setColProp(fields[i], colProp);
    }
}

那是你在找什么?

答案 1 :(得分:0)

您需要的功能的更正版本可以是

function setRequiredFields(fields, grid) {
    for (var i = 0; i < fields.length; i++) {
        var colProp = $(grid).jqGrid('getColProp',fields[i]);
        if (typeof colProp.editrules === "undefined") {
            colProp.editrules = {};
        }
        colProp.editrules.required = true;
        if (typeof colProp.formoptions === "undefined") {
            colProp.formoptions = {};
        }
        colProp.formoptions.elmsuffix = " *";
    }
}

您可以额外将$(grid)缩减为grid

关于这些变化的小评论。 editrulesrequired属性应该是正确的,没有大写字符。此外,方法getColProp会返回对应colModel元素的引用,因此您无需另外使用setColProp