如何使用给定的类名克隆元素

use*_*456 3 html javascript jquery dom clone

getElementById需要克隆div元素时使用.

码:

printHTML( document.getElementById("div_name").cloneNode(true));
Run Code Online (Sandbox Code Playgroud)

现在我需要使用 getElementsByClassName

使用时CloneNode无法正常工作getElementsByClassName.我怎么能把班级名字放在这里?

谢谢

编辑:

当我尝试使用它时:

printHTML( $('.dataTables_scroll').clone(true) );
Run Code Online (Sandbox Code Playgroud)

你可以看到我的功能:

function printHTML(clonedDive){
        var iframe = document.createElement("iframe");
        document.body.appendChild(iframe);
        iframe.contentWindow.onunload = function(){
        $(".DTTT_container").show("fast");
        $("#header_outer").show("fast");
        $(".ColVis.TableTools").show("fast");
        $("#footer").show("fast");
     };
      iframe.contentWindow.document.body.appendChild(clonedDive);
      iframe.contentWindow.print();

      document.body.removeChild(iframe); 
}
Run Code Online (Sandbox Code Playgroud)

我在这一行收到错误:

iframe.contentWindow.document.body.appendChild(clonedDive);
Run Code Online (Sandbox Code Playgroud)

这是一个错误描述:

Uncaught Error: NOT_FOUND_ERR: DOM Exception 8 
Run Code Online (Sandbox Code Playgroud)

ade*_*neo 8

getElementsByClassName 获取一个nodelist,或者一个包含元素的类数组对象,因为可以有多个具有相同类的元素.

getElementsByClassName即使只有一个元素与类匹配也会这样做.
您通常可以识别出类似于sin的方法getElements,这意味着它会获得多个元素,即nodeList.

getElementById 只获得一个元素,因为ID是唯一的.

要获取节点列表中的第一个元素,请使用括号表示法,如下所示:

document.getElementsByClassName("div_name")[0].cloneNode(true);
Run Code Online (Sandbox Code Playgroud)

或者可以使用querySelector,它只获得第一个匹配元素

document.querySelector(".div_name").cloneNode(true);
Run Code Online (Sandbox Code Playgroud)

jQuery解决方案将是:

$('.div_name').clone(true);
Run Code Online (Sandbox Code Playgroud)

并迭代具有某个类名的元素,您将使用循环

var elems = document.getElementsByClassName("div_name");

for ( var i=0; i<elems.length; i++ ) {
    printHTML( elems[i].cloneNode(true) );
}
Run Code Online (Sandbox Code Playgroud)