考虑这个简单的下拉菜单案例:arg
的值最初是 ['a', 'b', 'c']
,一旦选择了橙色选项,arg
设置为 ['a', 'b']
并且不会改回来,除非重新定义 arg
。在单击橙色以外的选项时选择下拉菜单选项之前,我想将 arg
重置为其状态。
我的问题是,在我的真实代码中,在选择该选项之前,arg
是由一个复杂的逻辑定义的,因此无法通过显式重写 else< 中的所有逻辑来重置
条件。有没有办法做 else {//将 arg 重置为下拉之前的状态 }
?
let arg = ['a', 'b', 'c'];
$('#dropdown').change(function () {
if ($('#dropdown').val() === 'orange') {
arg = ['a', 'b'];
console.log(arg);
}
else {
// can I reset value of arg to ['a', 'b', 'c'] without explicitly doing arg=['a', 'b', 'c']?
// something like arg.reset()
console.log(arg);
};
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id='dropdown'>
<option value='apple'>apple</option>
<option value='orange'>orange</option>
<option value='pear'>pear</option>
</select>
最佳答案
您可以将数组(及其偏差)存储为选项的数据属性:
// Prepare...
let arr = ["a", "b", "c"];
$('#dropdown option').data("choices", arr)
.filter('[value="orange"]').data("choices", ["a", "b"]);
$('#dropdown').change(function () {
arr = $(":selected", this).data("choices"); // just grab
console.log(arr);
}).trigger("change");
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id='dropdown'>
<option value='apple'>apple</option>
<option value='orange'>orange</option>
<option value='pear'>pear</option>
</select>
关于javascript - 如何在 else 语句中设置变量值不变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59268694/