use*_*456 3 html javascript jquery dom clone
我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 
getElementsByClassName 获取一个nodelist,或者一个包含元素的类数组对象,因为可以有多个具有相同类的元素.
getElementsByClassName即使只有一个元素与类匹配也会这样做.
您通常可以识别出类似于sin的方法getElements,这意味着它会获得多个元素,即nodeList.
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) );
}