2012-07-24 29 views
0

我想從我的html中獲取文本並保存正確的格式,就像它在瀏覽器上的樣子一樣。從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。

+0

我不清楚你在問什麼。如果你想保留HTML格式,爲什麼不使用'.html()'? – 2012-07-24 15:01:59

+0

但我只需要文字。看到我從javascript獲取文本,然後通過phonegap插件將其傳遞到客戶端c,並且文本將傳遞到我的打印sdk進行打印,我正在通過這種方式收據。 – jongbanaag 2012-07-25 00:29:37

回答

0

我認爲使用$("#print-header").html();應該可以解決您的問題。

請參閱$.text() documentation$.html() documentation

+0

是的,我也試過。但無論如何,表格我希望它被打印就像我想要的(代碼上面),但我沒有得到它。有任何想法嗎? – jongbanaag 2012-07-24 10:51:37

+0

你也可以試試'$(「#print-header」)[0] .innerHTML' ...我很困惑,爲什麼你在做什麼不工作。 – Dan 2012-07-24 16:10:14

+0

這兩個你建議的作品。但我現在關心的是桌面部分。我如何從中獲取文本但保留格式? – jongbanaag 2012-07-25 00:51:03

0

由於您的html與您聲明的要求不一致,以及您在哪裏獲取,我會假設您不需要條形碼,您不想'星期一',您不希望'交易類型'/'invoice-code'and lastly no'www.fairysales.com'
我還會假設你想要<%= WarehouseCity%>,<%= WarehouseState%> <%= WarehousePostalCode%> each-其他。

但更重要的是:我猜你控制這個HTML源代碼,它是一代,因爲你在'打印頭'中使用了變量。
那麼我假設你也有產生你的2個表格的var:'print-items'和'print-total'對嗎?

那麼如果你有這些變量......並且實際上想把它們傳遞給'objective c',那麼..你可以控制你用來發送這些數據到你的目標c應用程序的數據格式以用於進一步的任務。

如果您仍然希望將呈現的html文本作爲(單一)間隔的純文本(讓我們假設文本回退到客戶的htm電子郵件中)作爲輸入你的目標c,那麼你需要更多地考慮你的數據,比如在舊學校的日子裏:在最壞的情況下,每個領域會有多少角色?這是您需要添加/前綴的空白字符數量(以模擬您的表格對齊/左對齊)。這並不難。

現在我們假設你沒有權限訪問構建發送給瀏覽器的html的變量。
然後,你必須研究一些東西來遞歸地解析你的html-blocks,提取'innerTEXT'/' textContent'包含你需要的數據(它也可以查看錶格單元格的對齊方式),然後才能使用上述技術(dataformat/calculation/prepending/appending)。

那麼..你控制var的嗎?

希望這會有所幫助!

ps:我推薦了一個單間隔的字體,因爲......你還有什麼要按照你發佈'你想要的'的方式來對齊你的數據?
ps2:我其實也在想..爲什麼<div><abbr>12.00</abbr></div>

更新:我擺弄着你的小提琴,並建立了一個功能,確實做你想要的。請參閱jsfiddle.net/8yC5G/3/
該函數的返回函數仍然很髒,可以使用一些優化。也許我會再擺弄一些。注意:在FF中構建和測試,使用'textContent'而不是'innerTEXT'。

UPDATE2:jsfiddle.net/8yC5G/6/:新程序,清理了一下,更短,更可靠。自動縮放:P