从html获取包含格式的文本

时间:2012-07-24 10:42:25

标签: javascript jquery

我想从我的html中获取文本并保留正确的格式,就像在浏览器上看起来一样。

我想要这个

               CompanyName
              CompanyAddress
           Company Phone Number

       1  Item1   7.00   0%   7.00
       2  Item2   5.00   0%   5.00
                  TOTAL:         2
               SUBTOTAL:     12.00
                   CASH:     12.00

我收到了这个

                    CompanyName
                   CompanyAddress
                Company Phone Number

                   1  

                   Item1   

                  7.00   
                   0%   

                     7.00

我的HTML:

<div id="printPreview" class="interprise-popover-container">
<div class="interprise-popover-header popover-header">
    <h1 class="title">Print Preview</h1>
    <a class="popover-btn left-popover-btn btn-Cancel">Cancel</a>
    <a class="popover-btn right-popover-btn btn-Done">Done</a>
</div>
<br class="clearfloat"/>
<div id="printPreviewBody" class="interprise-popover-content">
    <div id="print-area">
    <div id="print-header">
        <h4><%= Company %></h4>
        <h6><%= WarehouseAddress %></h6>
        <h6><%= WarehouseCity %>, <%= WarehouseState %> <%= WarehousePostalCode %></h6>
        <h6><%= PhoneNumber %></h6>
        <h6>www.fairysales.com</h6>
        <h5 style="margin-top: 5px;"><%= TransactionType %>#&nbsp;<%= InvoiceCode %></h5>
    </div>
    <div id="print-barcode" style="margin:0 auto; "></div>
    <span style="font-size: 12px;">Monday</span>
    <div>
        <table id="print-items" cellspacing="0" width="100%">
                        <tbody>
                          <tr>
                            <td align="right"> 1 </td>
                            <td align="left"> Item1<br></td>
                            <td align="right">12.00</td>
                            <td align="right">0%</td>
                            <td align="right"><div><abbr>12.00</abbr></div></td>
                          </tr>
                       </tbody>
        </table>
    </div>
    <div id="print-total">
    </div>
</div>
</div>

按照我使用的方式

$("#print-header").text(); to extract the text from the div

更新:这是jsfiddle

http://jsfiddle.net/8yC5G/1/

我想要实现的实际上与结果相同,但是以文本格式,所以我可以将它作为字符串从javascript传递给目标c。

2 个答案:

答案 0 :(得分:0)

我认为使用$("#print-header").html();可以解决您的问题。

请参阅$.text() documentation$.html() documentation

答案 1 :(得分:0)

由于您的HTML与您所说的内容不一致,以及您所获得的内容,我会认为您不需要条形码,您不需要'星期一',您不需要'交易类型' /'invoice-code',最后没有'www.fairysales.com'
我还假设你想要&lt;%= WarehouseCity%&gt;,&lt;%= WarehouseState%&gt; &lt;%= WarehousePostalCode%&gt;彼此相邻。

但更重要的是:我猜你控制了这个html源代码,因为你在'print-header'中使用了vars。 然后,我同意你还有生成2个表的var:'print-items'和'print-total'吧?

如果你有vars ..并且实际上想要将它们传递给'objective c',那么..你可以控制你用来将这些数据发送到你的目标c应用程序的数据格式,以便进一步完成任务。 / p>

但是,如果您仍然希望将渲染的html文本等效为(单声道)间隔纯文本(例如,在htm-email中向客户发送仅文本回落)作为您的输入目标c,那么你需要更多关于你的数据的想法,比如在旧学校的日子里:在最坏的情况下每个字段会有多少字符?这是您需要附加/前置的空白字符数量(以模拟您的表格右/左对齐)。这并不难。

现在假设你没有访问构建发送到浏览器的html的vars 然后你必须处理一些事情来递归地解析你的html块提取'innerTEXT'/'textContent',它们包含你需要的数据(它也可以查看表格的单元格的对齐方式),然后才能最终得到上述技术(DATAFORMAT /计算/预谋/追加)。

那么......你控制var了吗?

希望这有帮助!

ps:我推荐使用单行间距字体,因为..您还要按照发布“想要的”的方式对齐数据? ps2:我其实也在想..为什么<div><abbr>12.00</abbr></div> ??

更新:我摆弄你的小提琴并构建了一个完全符合你想要的功能。见jsfiddle.net/8yC5G/3/
函数的返回功能仍然非常脏,可以使用一些优化。也许我会再捣蛋了。注意:在FF中构建和测试,使用'textContent'而不是'innerTEXT'。

UPDATE2: jsfiddle.net/8yC5G/6/:新例程,清理一下,更短,更可靠。自动缩放:P