javascript - 我可以重用 DOM 元素吗?

标签 javascript dom

DOM 中的许多对象的状态都会发生变化,但有些似乎不会。 假设您有两个选择,每个选择 A、B、C。每个select都有一个当前值,但是如果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]);
}

最佳答案

正如 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);

关于javascript - 我可以重用 DOM 元素吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30546158/

相关文章:

javascript - 无法使用 DOM 节点的属性作为 XPath/CSS 选择器查询的过滤器

javascript - 如何知道某个Node是否是HTML文档的Head?

jquery - 如何通过Jquery判断类中是否存在样式?

javascript - DOM:如何根据迭代器值设置元素宽度并在鼠标悬停时调用函数?

javascript - 如何在 d3.js 中使矩形成为圆弧/弯曲

javascript - jquery 中的旋转轮,带有鼠标拖动选项

Javascript 用另一个 If 语句隐藏一个 If 语句

javascript - 使用 id 作为 var 来访问 DOM 元素

javascript - 为什么这个简单的代码不能在 JSfiddle 上运行?

javascript - 通过 chrome 选项卡发送鼠标移动