0

我正在尝试使用 javascript 从 dbase 打印一个文本字段,其中文本字段由 php 提供给具有 id 的 textarea。print javascript 函数使用 getElementById 从 textarea 获取内容并打印出来。但这是问题所在。为了在文本区域中正确显示,文本字段中有换行符。这些在文本区域中是不可见的。它们只是显示为换行符。(它们在 dbase 表中使用 PHP admin 也是不可见的。它们也显示为换行符)。

但是,要在打印文本时显示换行符,需要将它们转换为 <br>. 否则,您会看到并打印一个通俗的句子。

我想我需要在 javascript 变量中搜索一些东西,也许是 \n 并替换为
但是,我似乎无法在打印页面中显示换行符(这是基于 html 的。)

谁能建议正确的方法来做到这一点?谢谢。

有缺陷的代码:js f

unction printit(id) {
var toprint = document.getElementById(id).innerHTML;
toprint = toprint.replace("\n","<br>");
win = window.open();
    self.focus();
    win.document.open();
    win.document.write('<'+'html'+'><'+'head'+'><'+'style'+'>');
    win.document.write('body, td { font-family: Verdana; font-size: 10pt;}');
    win.document.write('<'+'/'+'style'+'><'+'/'+'head'+'><'+'body'+'>');
    win.document.write(toprint); 
    win.document.write('<'+'/'+'body'+'><'+'/'+'html'+'>');
    win.document.close();
    win.print();
    win.close();
  }

html

<textarea id="textarea">A whole bunch
of text
with line breaks
goes here
</textarea><a href="javascript:void(0);" onclick="printit('textarea');">Print text</a>
4

3 回答 3

1

您可能只替换第一个换行符。尝试使用全局标志来替换它们:

toprint = toprint.replace(/\n/g, '<br />');
于 2012-12-26T16:22:08.407 回答
0

我相信您需要完全按照它在文本区域中的显示方式打印出来。textarea 对其内容应用换行。这些不是换行符,因此不能被替换

在打印之前将内容附加到与textarea 宽度相同的元素。

IE

...
win.document.write('<'+'/'+'style'+'><'+'/'+'head'+'><'+'body'+'>');

// element with same width as textarea
win.document.write('<div style="width: '+ document.getElementById(id).offsetWidth +'px">');
win.document.write(toprint); 
win.document.write('</div>'); 

win.document.write('<'+'/'+'body'+'><'+'/'+'html'+'>');
...
于 2012-12-26T16:46:01.553 回答
0

在 HTML 中显示换行符的最佳解决方案是使用 CSS white-space属性。

于 2018-02-07T12:47:13.427 回答