【发布时间】:2015-05-20 14:56:17
【问题描述】:
使用 Javascript。我正在尝试复制一个 div 并在 fo 中动态命名它。以下两种方法似乎都不起作用:
var origDiv = document.getElementById("outerSquare");
for (i=1; i<=4; ++i){
newDiv = document.body.appendChild(origDiv.cloneNode(true));
// newDiv.id = "block"+i;
newDiv.setAttribute("id", "block"+i);
}
这是小提琴: http://jsfiddle.net/dmperkins74/5r01zyma/
有趣的是,它似乎只是在我的“outerSquare”中复制了 div。如果我删除重置 ID 的尝试,一切都会失败。任何见解将不胜感激。
谢谢, 丹·P.
【问题讨论】:
-
它工作正常,我可以看到?什么问题?
-
因为它复制了“outerSquare”,所以我应该得到 4 个新的红色方块,每个中间都有一个红色方块。如果您注释掉“setAttribute”行,它会按照我期望的方式运行,但目前,除了右侧的原始块之外,我看到的只有 4 个堆叠的黑框。
-
这可以满足您的要求 - 您可以使用浏览器的开发人员工具轻松检查。只有为
#outerSquare定义的样式显然不再适用,因为您更改了 id。并且内部元素仍然都有 idinnerSquare,因为你根本没有改变那个,所以你最终会得到多个具有相同 id 的元素,你应该避免这种情况。
标签: javascript for-loop duplicates