Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.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对象属性值?_Javascript_Jquery - Fatal编程技术网

为什么我能';是否更新我的JavaScript对象属性值?

为什么我能';是否更新我的JavaScript对象属性值?,javascript,jquery,Javascript,Jquery,我在更新我的应用程序对象属性值时遇到问题!每当我在我的应用程序对象中调用方法时,我都试图将“visible”属性从false更新为true 现在我不明白为什么我不能更新这些值!!!谁能帮帮我吗 这是代码 var app = app || {}; app.layout = { // SIDEBAR 'sidebar': function(a) { var options = { 'settings': {

我在更新我的应用程序对象属性值时遇到问题!每当我在我的应用程序对象中调用方法时,我都试图将“visible”属性从false更新为true

现在我不明白为什么我不能更新这些值!!!谁能帮帮我吗

这是代码

var app = app || {};

app.layout = {

    // SIDEBAR
    'sidebar': function(a) {
        var options = {
            'settings': {
                'object': $('.sidebar-left'),
                'visible': false,
                'type': 'wide'
            },
            'open': function() {
                if(options.isActive() === false) {
                    options.settings.visible = true;
                    options.settings.object.addClass('active');
                }
            },
            'close': function() {
                if(options.isActive() === true) {
                    options.settings.visible = false;
                    options.settings.object.removeClass('active');

                }
            },
            'isActive': function() {
                if(options.settings.visible === true) {
                    return true;
                } else {
                    return false;
                }
            }
        }
        return options[a];
    }

    // HEADER
    // CONTENT
    // FOOTER
}
这个小应用程序API背后的想法是,我不需要去手动检查容器是否可见,也不需要手动更改UI,我只需要调用App.layout方法就可以了

正如您所看到的,当
app.layout.sidebar('open')()的两个方法出现时,我试图更新'visible'属性值
app.layout.sidebar('close')()被调用

多谢各位


以下是更新版本:

希望它能帮助那些希望将其集成到应用程序中的人,因为它使跟踪用户界面变得非常容易,而无需每次手动检查

但是,如果有人知道更好的方法,那么就更新JSFIDLE版本,并在评论部分链接回来:)

谢谢你们,特别是那些乐于助人的人 干杯

每次调用
侧栏
时,您的代码都会重新创建选项对象,其中
作为
可见
的硬编码值:

app.layout = {

    // SIDEBAR
    'sidebar': function(a) {
        var options = {
            'settings': {
                'object': $('.sidebar-left'),
                'visible': false,                 // <=== Note
                'type': 'wide'
            },
            // ...
        return options[a];
    }
}
…将始终看到
选项.设置.可见

我看不出您的
布局
对象如此复杂的任何原因,因此除了确保每次都不重新创建
选项
之外,我真的无法建议进行适当的更改

如果您愿意改用这种电话:

app.layout.sidebar.open();
…然后你可以让事情变得简单得多:

var app = app || {};

app.layout = (function() {
    var options = {
        'settings': {
            'object': $('.sidebar-left'),
            'visible': false,
            'type': 'wide'
        }
    };
    return {
        sidebar: {
            'open': function() {
                if(options.isActive() === false) {
                    options.settings.visible = true;
                    options.settings.object.addClass('active');
                }
            },
            'close': function() {
                if(options.isActive() === true) {
                    options.settings.visible = false;
                    options.settings.object.removeClass('active');

                }
            },
            'isActive': function() {
                if(options.settings.visible === true) {
                    return true;
                } else {
                    return false;
                }
            }
        }
        // HEADER, e.g.
        ,
        header: {
            // ...
        }
        // CONTENT
        // FOOTER
    };
})();
请注意,您需要确保代码在
.sidebar left
元素存在后运行


旁注:您在
选项
对象属性键中使用的引号都是可选的,您可以不使用它们:

var options = {
    settings: {
        object: $('.sidebar-left'),
        visible: false,
        type: 'wide'
    }
};
定义
侧栏的工具也一样。在JavaScript中,唯一需要在属性名称周围加引号的时间是如果名称不是无效的标识符名称(例如,名称中有空格,或以数字开头但不是数字)。

每次调用
侧栏时,代码都会重新创建选项对象,将
false
作为
可见的硬编码值

app.layout = {

    // SIDEBAR
    'sidebar': function(a) {
        var options = {
            'settings': {
                'object': $('.sidebar-left'),
                'visible': false,                 // <=== Note
                'type': 'wide'
            },
            // ...
        return options[a];
    }
}
…将始终看到
选项.设置.可见

我看不出您的
布局
对象如此复杂的任何原因,因此除了确保每次都不重新创建
选项
之外,我真的无法建议进行适当的更改

如果您愿意改用这种电话:

app.layout.sidebar.open();
…然后你可以让事情变得简单得多:

var app = app || {};

app.layout = (function() {
    var options = {
        'settings': {
            'object': $('.sidebar-left'),
            'visible': false,
            'type': 'wide'
        }
    };
    return {
        sidebar: {
            'open': function() {
                if(options.isActive() === false) {
                    options.settings.visible = true;
                    options.settings.object.addClass('active');
                }
            },
            'close': function() {
                if(options.isActive() === true) {
                    options.settings.visible = false;
                    options.settings.object.removeClass('active');

                }
            },
            'isActive': function() {
                if(options.settings.visible === true) {
                    return true;
                } else {
                    return false;
                }
            }
        }
        // HEADER, e.g.
        ,
        header: {
            // ...
        }
        // CONTENT
        // FOOTER
    };
})();
请注意,您需要确保代码在
.sidebar left
元素存在后运行


旁注:您在
选项
对象属性键中使用的引号都是可选的,您可以不使用它们:

var options = {
    settings: {
        object: $('.sidebar-left'),
        visible: false,
        type: 'wide'
    }
};
定义
侧栏的工具也一样。在JavaScript中,唯一需要在属性名称周围加引号的时间是如果名称不是无效的标识符名称(例如,名称中有空格,或以数字开头但不是数字)。

每次调用
侧栏时,代码都会重新创建选项对象,将
false
作为
可见的硬编码值

app.layout = {

    // SIDEBAR
    'sidebar': function(a) {
        var options = {
            'settings': {
                'object': $('.sidebar-left'),
                'visible': false,                 // <=== Note
                'type': 'wide'
            },
            // ...
        return options[a];
    }
}
…将始终看到
选项.设置.可见

我看不出您的
布局
对象如此复杂的任何原因,因此除了确保每次都不重新创建
选项
之外,我真的无法建议进行适当的更改

如果您愿意改用这种电话:

app.layout.sidebar.open();
…然后你可以让事情变得简单得多:

var app = app || {};

app.layout = (function() {
    var options = {
        'settings': {
            'object': $('.sidebar-left'),
            'visible': false,
            'type': 'wide'
        }
    };
    return {
        sidebar: {
            'open': function() {
                if(options.isActive() === false) {
                    options.settings.visible = true;
                    options.settings.object.addClass('active');
                }
            },
            'close': function() {
                if(options.isActive() === true) {
                    options.settings.visible = false;
                    options.settings.object.removeClass('active');

                }
            },
            'isActive': function() {
                if(options.settings.visible === true) {
                    return true;
                } else {
                    return false;
                }
            }
        }
        // HEADER, e.g.
        ,
        header: {
            // ...
        }
        // CONTENT
        // FOOTER
    };
})();
请注意,您需要确保代码在
.sidebar left
元素存在后运行


旁注:您在
选项
对象属性键中使用的引号都是可选的,您可以不使用它们:

var options = {
    settings: {
        object: $('.sidebar-left'),
        visible: false,
        type: 'wide'
    }
};
定义
侧栏的工具也一样。在JavaScript中,唯一需要在属性名称周围加引号的时间是如果名称不是无效的标识符名称(例如,名称中有空格,或以数字开头但不是数字)。

每次调用
侧栏时,代码都会重新创建选项对象,将
false
作为
可见的硬编码值

app.layout = {

    // SIDEBAR
    'sidebar': function(a) {
        var options = {
            'settings': {
                'object': $('.sidebar-left'),
                'visible': false,                 // <=== Note
                'type': 'wide'
            },
            // ...
        return options[a];
    }
}
…将始终看到
选项.设置.可见

我看不出您的
布局
对象如此复杂的任何原因,因此除了确保每次都不重新创建
选项
之外,我真的无法建议进行适当的更改

如果您愿意改用这种电话:

app.layout.sidebar.open();
…然后你可以让事情变得简单得多:

var app = app || {};

app.layout = (function() {
    var options = {
        'settings': {
            'object': $('.sidebar-left'),
            'visible': false,
            'type': 'wide'
        }
    };
    return {
        sidebar: {
            'open': function() {
                if(options.isActive() === false) {
                    options.settings.visible = true;
                    options.settings.object.addClass('active');
                }
            },
            'close': function() {
                if(options.isActive() === true) {
                    options.settings.visible = false;
                    options.settings.object.removeClass('active');

                }
            },
            'isActive': function() {
                if(options.settings.visible === true) {
                    return true;
                } else {
                    return false;
                }
            }
        }
        // HEADER, e.g.
        ,
        header: {
            // ...
        }
        // CONTENT
        // FOOTER
    };
})();
请注意,您需要确保代码在
.sidebar left
元素存在后运行


旁注:您在
选项
对象属性键中使用的引号都是可选的,您可以不使用它们:

var options = {
    settings: {
        object: $('.sidebar-left'),
        visible: false,
        type: 'wide'
    }
};

定义
侧栏的工具也一样。在JavaScript中,您唯一需要在属性名称周围加引号的时候是如果名称不是无效的标识符名称(例如,名称中有空格,或以数字开头但不是数字)。

控制台中是否出现错误?每次调用
app.layout.sidebar()
时,您都在创建一个全新的“options”对象,其中“visible”属性初始化为
false
。每次调用
侧栏
函数时,您的
选项
对象都会重新定义;因此您会重置值。may helpSide注意:您做了很多工作