Javascript-试图复制一个数组,但没有引用

Javascript-试图复制一个数组,但没有引用,javascript,arrays,Javascript,Arrays,我有一个选择元素(交付时间),在更改另一个选择元素(交付时间)时需要更新。 在我的HTML/PHP中,我有三个隐藏的selecthours元素,用于选择每天的时间。 在这个javascript中,我有一个事件监听器,用于在交付日进行更改 阵列.原型.推送.应用(t,t3);复制元素,但删除t3(因此,如果用户重新选择该元素为空的日期) t=[…t3];复制元素而不删除t3,但将引用剪切到document.getElementById(“shipping_time”).options,因此我得到一

我有一个选择元素(交付时间),在更改另一个选择元素(交付时间)时需要更新。 在我的HTML/PHP中,我有三个隐藏的selecthours元素,用于选择每天的时间。 在这个javascript中,我有一个事件监听器,用于在交付日进行更改

阵列.原型.推送.应用(t,t3);复制元素,但删除t3(因此,如果用户重新选择该元素为空的日期)

t=[…t3];复制元素而不删除t3,但将引用剪切到document.getElementById(“shipping_time”).options,因此我得到一个空选择器

//update hours
jQuery(document).ready(function($){
  const selectElement = document.querySelector('#shipping_day');

  selectElement.addEventListener('change', (event) => {
    var selectedday = document.getElementById("shipping_day");
    var t = document.getElementById("shipping_time").options;
    var t1 = document.getElementById("shipping_time1").options;
    var t2 = document.getElementById("shipping_time2").options;
    var t3 = document.getElementById("shipping_time3").options;
    var i;

    if(selectedday.options.selectedIndex==0){
      t.options=0;
      Array.prototype.push.apply(t, t1);
    }
    if(selectedday.options.selectedIndex==1){
      t.length=0;
      Array.prototype.push.apply(t, t2);
    }
    if(selectedday.options.selectedIndex==2){

      t.length=0;
      //Array.prototype.push.apply(t, t3);
      //t = [...t3];

    }

  console.log(t);
  console.log(t1);
  console.log(t2);
  console.log(t3);
  console.log(document.getElementById("shipping_time"));

  });
});```

您的问题是DOM节点不能同时位于两个位置,因此实际上您正在移动它们。如果您确实需要使用隐藏字段作为选择选项的源,则必须克隆这些选项,以便将它们复制到DOM中的其他位置:

Array.from(t1).map(x => x.cloneNode(true)).forEach(x => t.add(x));
下面是一个工作演示:

const[mainSelect,abcSelect,defSelect,firstButton,secondButton]=['main-select','abc-select','def-select','first button','second button'].map(document.getElementById.bind(document));
firstButton.addEventListener('单击',()=>{
from(abcSelect.options).map(x=>x.cloneNode(true)).forEach(x=>mainSelect.options.add(x));
});
secondButton.addEventListener('单击',()=>{
from(defSelect.options).map(x=>x.cloneNode(true)).forEach(x=>mainSelect.options.add(x));
});
。隐藏{
显示:无;
}

A.
B
C
D
E
F
添加abc

添加def
谢谢,效果很好。注意,它是t1,不是t1选项是的,确实是我编辑的