在javascript中复制dom元素

时间:2014-02-16 09:24:29

标签: javascript html dom clone

我正在尝试创建一个函数,当onclick发生时,它会复制javascript中html中的选定(按类名)dom元素。

到目前为止我已经和我正在寻找建立listItem的onclick

<script type="text/javascript">
    document.getElementById("button").onclick = duplicate;
    var i = 0;
    var original = document.getElementByClassName('listItem');

    function duplicate() {
        var clone = original.cloneNode(true); // "deep" clone
        clone.class = "listItem"; // there can only be one element with an ID
        original.parentNode.appendChild(clone);
    }
</script>

<div class="listItem">
    <div class="thumb">
        <a href="#"></a>
    </div>
    <div class="description">
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
    </div>
    <div class="btn">
        <a href="#" title="More Info">More Info</a>
    </div>
</div>

<button id="button" onclick="duplicate()">Click me</button>

2 个答案:

答案 0 :(得分:1)

许多元素都可以有类,所以函数返回一个列表。

document.getElementByClassName('listItem');

应该是:

document.getElementsByClassName('listItem')[0]; //As @nevermind said first

此外,元素没有class属性,因此.className

clone.class = "listItem";

应该是

clone.className = "listItem";

尝试在进入stackoverflow之前在互联网上搜索更多内容。似乎你跳过了一些javascript课程(:P)

答案 1 :(得分:0)

最后还是这个

<script type="text/javascript">
  function Clone () {
      var listItem = document.getElementsByClassName("listItem")[0].cloneNode(true)
      var cloneListItem = listItem.cloneNode (true);
      var list = document.getElementById ("list");
      list.appendChild (cloneListItem);
  }
</script>