如何克隆与给定的类名称元素(How to clone element with given clas

2019-07-05 13:12发布

我使用getElementById当我需要克隆的div元素。

码:

printHTML( document.getElementById("div_name").cloneNode(true));

现在,我需要使用getElementsByClassName

当使用CloneNode不工作getElementsByClassName 。 我怎样才能把类的名字会在这里?

谢谢

编辑:

当我尝试使用此:

printHTML( $('.dataTables_scroll').clone(true) );

你可以看到我的功能:

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); 
}

我在这条线得到一个错误:

iframe.contentWindow.document.body.appendChild(clonedDive);

这是一个错误的描述:

Uncaught Error: NOT_FOUND_ERR: DOM Exception 8 

Answer 1:

getElementsByClassName得到一个节点列表,或包含元素,如果你会,因为有可能用相同的类多于一个元素的数组状物体。

getElementsByClassName做到这一点,即使只有一个元素的类相匹配。
你通常可以识别这样的方法是sgetElements ,这意味着它得到多个元素,即节点列表。

getElementById只得到一个元素的ID是唯一的。

为了得到第一个元素的节点列表,使用括号标记,就像这样:

document.getElementsByClassName("div_name")[0].cloneNode(true);

或人们可以使用querySelector ,它获取所述第一匹配元件仅

document.querySelector(".div_name").cloneNode(true);

jQuery的解决办法是:

$('.div_name').clone(true);

并通过元素迭代具有一定的类名,你会使用一个循环

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

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


Answer 2:

由于getElementsByClassName方法返回一个对象的数组,所以你必须使用for循环当中迭代,如下所示:

 for (i = 0; i < document.getElementsByClassName("div_name").length; i++){  

printHTML( document.getElementsByClassName("div_name")[i].cloneNode(true));
}

否则,如果你知道元素的索引你让我们说1

printHTML( document.getElementsByClassName("div_name")[1].cloneNode(true));


Answer 3:

这不起作用? :

printHTML( document.getElementsByClassName("class_name")[0].cloneNode(true));


Answer 4:

你可以通过元素循环和克隆一个接一个......

var e = document.getElementsByClassName('div');
for (var i = 0; i < e.length; i += 1) {
    // Clone e[i] here
    console.log(e[i].cloneNode(true));
} 


文章来源: How to clone element with given class name