Javascript 我可以在不同的元素上添加相同的document.createElement元素吗?

Javascript 我可以在不同的元素上添加相同的document.createElement元素吗?,javascript,debugging,Javascript,Debugging,我有两个下拉列表有相同的项目 当我创建单个元素并试图将其分配给两个不同的父元素时,此代码不起作用 function addAssignee() { let dropDown1 = document.getElementById("bugOwner"); let dropDown2 = document.getElementById("bugAssignee"); document.getElementById("bugOwner").options.length = 0

我有两个下拉列表有相同的项目

当我创建单个元素并试图将其分配给两个不同的父元素时,此代码不起作用

function addAssignee() {
    let dropDown1 = document.getElementById("bugOwner");
    let dropDown2 = document.getElementById("bugAssignee");

    document.getElementById("bugOwner").options.length = 0;
    document.getElementById("bugAssignee").options.length = 0;

    let localData = localStorage.getItem("users");
    let jsonObj = JSON.parse(localData);

    for (i in jsonObj.records) {
       let option = document.createElement("OPTION");
        option.innerHTML = jsonObj.records[i].name;
        option.value = jsonObj.records[i].unique;
        dropDown1.options.add(option);
        dropDown2.options.add(option);
    }
}
输出:

这段代码正在运行,当我创建两个元素时,为它们赋值并将它们添加到父元素

function addAssignee() {
    let dropDown1 = document.getElementById("bugOwner");
    let dropDown2 = document.getElementById("bugAssignee");

    document.getElementById("bugOwner").options.length = 0;
    document.getElementById("bugAssignee").options.length = 0;

    let localData = localStorage.getItem("users");
    let jsonObj = JSON.parse(localData);

    for (i in jsonObj.records) {
        let option1 = document.createElement("OPTION");
        let option2 = document.createElement("OPTION");
        option1.innerHTML = jsonObj.records[i].name;
        option1.value = jsonObj.records[i].unique;
        option2.innerHTML = jsonObj.records[i].name;
        option2.value = jsonObj.records[i].unique;
        dropDown1.options.add(option1);
        dropDown2.options.add(option2);
    }
}
输出:


您可以始终执行
让option2=option1.clone()
或在追加时仅克隆:
下拉菜单2.options.add(option.clone())
您始终可以执行
让option2=option1.clone()
或在追加时仅克隆:
下拉菜单2.options.add(option.clone())

HTML DOM模型构建为对象树。每个DOM可以有多个子项,但只有一个父项。因此,即使没有JavaScript错误,也不能将相同的DOM添加到不同的父对象。

HTML DOM模型被构造为对象树。每个DOM可以有多个子项,但只有一个父项。因此,即使没有JavaScript错误,也不能将相同的DOM添加到不同的父对象。

不能将子对象设置为具有多个父对象。因此,创建一个
选项
,然后使用
cloneNode
克隆它,
true
用于深度复制

对于此演示,
localStorage
将不起作用,因此请对该选项进行编码 如果它是一个数组,也不能使用
for..in
在其上循环。将本机
用于
循环或数组方法,如
forEach

让jsonObj={
记录:[{
名称:‘A’,
独特:“1”
}, {
名称:‘B’,
独特:“10”
}]
}
函数addappendent(){
let dropDown1=document.getElementById(“bugOwner”);
let dropDown2=document.getElementById(“BugAssignment”);
document.getElementById(“bugOwner”).options.length=0;
document.getElementById(“BugAssignment”).options.length=0;
让选项=“”
for(设i=0;i
你的名字
待会儿
臭虫受让人
待会儿

不能将子项设置为具有多个父项。因此,创建一个
选项
,然后使用
cloneNode
克隆它,
true
用于深度复制

对于此演示,
localStorage
将不起作用,因此请对该选项进行编码 如果它是一个数组,也不能使用
for..in
在其上循环。将本机
用于
循环或数组方法,如
forEach

让jsonObj={
记录:[{
名称:‘A’,
独特:“1”
}, {
名称:‘B’,
独特:“10”
}]
}
函数addappendent(){
let dropDown1=document.getElementById(“bugOwner”);
let dropDown2=document.getElementById(“BugAssignment”);
document.getElementById(“bugOwner”).options.length=0;
document.getElementById(“BugAssignment”).options.length=0;
让选项=“”
for(设i=0;i
你的名字
待会儿
臭虫受让人
待会儿

您可以共享html代码吗?您的姓名TODO Later Bug Assignment TODO Later您可以共享html代码吗?您的姓名TODO Later Bug Assignment TODO Later设置为true。dropDown2.options.add(option.clone(true))将deep设置为true。dropDown2.options.add(option.clone(true))