Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 禁用javasscript中的选项/按钮_Javascript_Jquery - Fatal编程技术网

Javascript 禁用javasscript中的选项/按钮

Javascript 禁用javasscript中的选项/按钮,javascript,jquery,Javascript,Jquery,我有如下javascript代码: p.onRowSelectExtraListener = function(e) { var that = e.data.that; that.actions.selectedRows = that.table.getSelectedRows(); var selected = []; var disableoption = false; $('#checkboxes input:checked').each(func

我有如下javascript代码:

p.onRowSelectExtraListener = function(e)
{
    var that = e.data.that;

    that.actions.selectedRows = that.table.getSelectedRows();
    var selected = [];
    var disableoption = false;
    $('#checkboxes input:checked').each(function() {
        selected.push($(this).attr('statusid'));
    });

    $.each(selected, function(index, value) {
        if (value == 27)
        {
            disableoption = true;
            return false;
        }
        console.log(disableoption);
       if(disableoption === true)
           {
           console.log("calling another function");
           //call p.getRowActions and disable the 3rd menu item/button.option.
           }
    });
};

p.getRowActions = function()
{
    var that = this;
    var addToGroupOptions = this.data.group.slice(0);
    console.log("in get row actions");
    if (this.canUnlock == 0)
        {
            console.log("In Super-IF loop");
        }

    addToGroupOptions.unshift({id: 'new', name: 'new group'});
                //TODO translate
                return [
                    {
                        option: {id: '4', name: 'add to group'},
                        options: addToGroupOptions,
                        type: 'ajax',
                        func: function(selectedRows, group)
                        {
                            that.onAddToGroup(selectedRows, group);
                        }
                    },
                    {
                        option: {id: '2', name: 'change rights issue'},
                        type: 'ajax',
                        func: function(selectedRows, rights) {
                            that.onChangeRights(selectedRows, rights);
                        }
                    },
                    {
                        option: {id: '1', name: 'change status'},
                        options: this.data.status,
                        type: 'ajax',
                        func: function(selectedRows, status) {
                            that.onChangeStatus(selectedRows, status);
                        }
                    },
                    {
                        option: {id: '3', name: 'edit'},
                        type: 'ajax',
                        func: function(selectedRows, edit) {
                            that.onChangeEdit(selectedRows, edit);
                        }
                    }
                ];
};
现在,在这两个函数中,第二个函数在我加载页面时首先被调用/执行。 因此我可以看到
console.log(“in get row actions”)打印以及
返回[]
语句下的4个选项在我的应用程序中显示为按钮

现在我的要求是:

禁用第三个选项(id为1的选项名称:在第一个功能中设置
disableoption=true时更改状态)

这怎么可能

如何访问和删除Different function中定义的属性


提前感谢。

p.getRowActions返回一个数组,访问数组中的对象并更改所需对象的属性,修改对象后,可以使用新对象()重新组装数组,然后将此更正的数组返回到使用其数据的组件,以将HTML对象添加到DOM中

另一个选项是在接收从
p.getRowActions
返回的数组的函数末尾插入回调函数,以便在创建/呈现对象后,可以在DOM中编辑该对象

更新(用于说明解决方案的伪代码):

function some_function_that_consumes_getRowActions_that_is_somewhere_else_that_I_dont_know() {
    var arrayOfHTMLOptions = p.getRowActions();

    //inserting options to DOM...

    var theOptionYouWant = document.getElementById('1');
    theOptionYouWant.disabled = true;
}
另一个选项(根据可能需要对该函数进行新更改的潜在的即将出现的用例,可能更优雅)是重写对象“p”的方法通过继承并构建您自己的
p.getRowActions
返回所需的选项数组,然后您必须更新接收此数组的函数,以便它可以指向新的“p子对象”,这样您将有一种更灵活的方式来不断更改
p.getRowActions

下面是一些关于使用Javascript进行面向对象编程的酷读物:

谢谢@Marcelor的帮助。我已经从理论上理解了你的意思。你能为我提供实现代码吗?因为我对Javascript很幼稚。