首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打印getElementsByClassName

打印getElementsByClassName
EN

Stack Overflow用户
提问于 2014-03-02 14:55:04
回答 2查看 2.4K关注 0票数 2

我只想打印一些属于特定类的html文件。我成功地创建了完成这项工作的getElementById funciotn,但是我似乎无法为getElementsByClassName创建同样的功能。我需要的是能够只打印有class=“打印”的单个div,而atm我只打印ID。

下面是我的html代码示例:

代码语言:javascript
复制
    <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“

代码语言:javascript
复制
<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>

提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-02 15:04:39

getElementsByClassName返回一组元素

在for循环中,必须打印每个div。

代码语言:javascript
复制
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()
}
票数 2
EN

Stack Overflow用户

发布于 2014-03-02 15:05:54

您可以使用document.getElementsByClassName()document.querySelectorAll()很小地做到这一点。下面是一个使用document.querySelectorAll()查找带有"print“类的所有div的示例函数:

代码语言:javascript
复制
  var visitAllPrintDivs = function(visitFunction) {
     var divsWithPrintClass = document.querySelectorAll('div.print');
     for (var i = 0; i < divsWithPrintClass.length; i++) {
        var divWithPrintClass = divsWithPrintClass[i];
        visitFunction(divWithPrintClass);
     }
  };

..。您可以简单地使用如下所示:

代码语言:javascript
复制
visitAllPrintDivs(console.log);  // applies "console.log(div)" to the divs.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22129151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档