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