javascript - 如何在 else 语句中设置变量值不变?

标签 javascript jquery html css

考虑这个简单的下拉菜单案例: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/

相关文章:

c# - 在 WebBrowser 控件中注入(inject) CSS

javascript - HTML5 替代 Uploadify

javascript - 分配随机数,避免 JavaScript 中某个范围内的数字被阻塞

javascript - 如何拆分字符串并为每个字符串着色?

javascript - jquery - 垂直 Accordion 导航菜单

使用 SetTimeout() 的 JavaScript Canvas 动画

android - 如何在 Android 上为 Web 应用程序指定添加到主屏幕图标的快捷方式?

javascript - 在用户登录时检查具有相同网站的其他选项卡并重新加载这些选项卡

javascript - 与小书签的来回跨域通信

javascript - 在javascript中解析具有特殊属性的json