Javascript 如何在else语句中将变量值设置为不变?
考虑这个简单的下拉菜单案例:Javascript 如何在else语句中将变量值设置为不变?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,考虑这个简单的下拉菜单案例:arg的值最初是['a','b','c'],一旦选择橙色选项,arg将设置为['a','b'],并且不会更改回去,除非重新定义arg。我想先将arg重置为其状态,然后单击除橙色以外的选项选择下拉菜单选项 我的问题是,在我的实际代码中,在选择选项之前,arg是由复杂的逻辑定义的,因此无法通过显式地重新写入else条件中的所有逻辑来重置。是否有方法执行操作{//reset arg到其下拉前的状态} 让arg=['a','b','c']; $('#下拉列表')。更改(函数
arg
的值最初是['a','b','c']
,一旦选择橙色选项,arg
将设置为['a','b']
,并且不会更改回去,除非重新定义arg
。我想先将arg
重置为其状态,然后单击除橙色以外的选项选择下拉菜单选项
我的问题是,在我的实际代码中,在选择选项之前,arg
是由复杂的逻辑定义的,因此无法通过显式地重新写入else
条件中的所有逻辑来重置。是否有方法执行操作{//reset arg到其下拉前的状态}
让arg=['a','b','c'];
$('#下拉列表')。更改(函数(){
if($('#下拉列表').val()=='orange'){
arg=['a','b'];
控制台日志(arg);
}
否则{
//我可以在不显式执行arg=['a','b','c']的情况下将arg的值重置为['a','b','c']吗?
//类似arg.reset()的内容
控制台日志(arg);
};
})
苹果
橙色
梨
您可以将数组(及其偏差)存储为选项的数据属性:
//准备。。。
设arr=[“a”,“b”,“c”];
$(“#下拉选项”).data(“选项”,arr)
.filter('[value=“orange”]')。数据(“选项”、[“a”、“b”);
$('#下拉列表')。更改(函数(){
arr=$(“:selected”,this).data(“选项”);//只需抓取
控制台日志(arr);
}).触发(“变更”)代码>
苹果
橙色
梨
您可以使用辅助变量,例如argOriginal
,来存储原始列表:
让arg=['a','b','c'];
设argOriginal=arg;
$('#下拉列表')。更改(函数(){
if($('#下拉列表').val()=='orange'){
arg=['a','b'];
控制台日志(arg);
}
否则{
arg=原始arg;
控制台日志(arg);
};
})
苹果
橙色
梨
您可以将获取arg
的“复杂逻辑”放入一个函数中,然后在需要重置arg时再次调用该函数(您可以通过提供不同的参数来更改函数的行为)@RoryMcCrossan将其存储在两个变量中并复制它听起来有点麻烦?是的@NickParsons方法要好得多,这取决于计算的性能