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))