在HTML dom中重用对象是否合法?

时间:2015-05-30 12:27:04

标签: javascript dom

DOM中的许多对象都具有更改的状态,但有些似乎没有。 假设您有两个选择,每个选择A,B,C。每个选择都有一个当前值,但如果A,B,C的值永远不会改变,它们可以共享吗?例如:

var opt = [
  document.createElement("option"),
  document.createElement("option"),
  document.createElement("option")
];
opt[0].value = 'a';
opt[1].value = 'b';
opt[2].value = 'c';
var select1 = document.createElement("select");
var select2 = document.createElement("select");

for (var i = 0; i < opt.length; i++) {
  select1.appendChild(opt[i]);
  select2.appendChild(opt[i]);
}

1 个答案:

答案 0 :(得分:3)

像pointy指出的那样,将dom元素附加到新父元素会将其从旧元素中删除。但是,您可以在将选项附加到第二个选择之前克隆您的选项:

var opt = [
  document.createElement("option"),
  document.createElement("option"),
  document.createElement("option")
];
opt[0].text = 'a';
opt[1].text = 'b';
opt[2].text = 'c';
var select1 = document.createElement("select");
var select2 = document.createElement("select");

for (var i = 0; i < opt.length; i++) {
  select1.appendChild(opt[i]);
  select2.appendChild(opt[i].cloneNode(true));
}
document.getElementsByTagName("body")[0].appendChild(select1);
document.getElementsByTagName("body")[0].appendChild(select2);