javascript - 打印 getElementsByClassName

标签 javascript printing

我只想打印属于特定类别的 html 文件的部分内容。我设法创建 getElementById funciotn 完成了这项工作,但我似乎无法为 getElementsByClassName 创建相同的内容。我需要能够只打印具有 class="print"的单个 div,而 atm 只打印 ID。

这是我的 html 代码示例:

    <div id="CCC" title"Checklist"> 
        <h2>Checklist</h2>
            <div>Content</div>
</div>

<div id="BBB" title="Chapter 1">
        <h2 class="Chapter">Chapter 1</h2>
            <div><p>Content 2</p></div>

    <div>
        <table id="Ch1_tab" width="100%" border="1" style="border-color:#D2D2D2; border-collapse:collapse;">
        <div id="Q0101" class="print">
        <tr>
            <td width="41" align="left" valign="top"><div class="QNumber">1.1</div></td>
            <td><div class="QText">Name of the vessel:</div></td>
            <td width="300"><div class="Response"><input name="Text" type="text" id="vslName" size="31"></div></td>
        </tr>
        </div>
        <div id="Q0102">
        <tr>
            <td width="41" align="left" valign="top"><div class="QNumber">1.2</div></td>
            <td><div class="QText">Vessel IMO Number:</div></td>
            <td width="300"><div class="Response"><input name="Text" type="number" id="IMONum" size="10"></div></td>
        </tr>
        </div>
        <div id="Q0107" class="print">
        <tr>
            <td width="41" align="left" valign="top"><div class="QNumber">1.7</div></td>
            <td><div class="QText">How many Load Lines certificates available:</div></td>
            <td width="300"><div class="Response"><input name="Text" type="number" id="R0107" size="10"></div></td>
        </tr>
        </div>
        <div id="Q0107" class="print">
        <tr>
            <td width="41" align="left" valign="top"><div class="QNumber">1.9</div></td>
            <td><div class="QText">Date the crew commenced preparation for vetting:</div></td>
            <td width="300"><div class="Response"><input name="GenDate" class="GenDate" type="text" id="R0109"></div></td>
        </tr>
        </div>
        </table>
    </div>


<iframe name=print_frame width=0 height=0 frameborder=0></iframe>
<p>
<input type="button" value="Print Div" onclick="javascript:printDiv()">
</p>

这是我的 JS 打印 ID="BBB"

<script>
printDivCSS = new String ('')
function printDiv() {
    window.frames["print_frame"].document.body.innerHTML=printDivCSS + document.getElementById('BBB').innerHTML
    window.frames["print_frame"].window.focus()
    window.frames["print_frame"].window.print()
}
</script>

提前致谢!

最佳答案

getElementsByClassName 返回一堆元素

您必须在 for 循环内打印每个 div

var elems = document.getElementsByClassName("print");
for ( var i = 0; i < elems.length; i++ ) {
    window.frames["print_frame"].document.body.innerHTML=printDivCSS+elems[i].innerHTML;
    window.frames["print_frame"].window.focus()
    window.frames["print_frame"].window.print()
}

关于javascript - 打印 getElementsByClassName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22129151/

相关文章:

javascript - 了解 cypress Clock() 和 tick()

C# - 打印目录中的所有文件

java - 打印多个类

swift - 在 webview 中打印 pdf 文件

javascript - 根据我的列表中的元素执行事件监听器

javascript - 课后重置编号

Python3 - 在字符串格式化程序参数中使用变量

Python-带有打印的递归

javascript - jQuery - 获取从当前点开始具有类的所有元素

javascript - 如何在javascript中为已选择的选项点击触发onclick/onchange事件