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)
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)
| 归档时间: |
|
| 查看次数: |
3357 次 |
| 最近记录: |