0

javascriptを使用して、テキストフィールドがphpによって提供されるdbaseからIDを持つtextareaにテキストフィールドを出力しようとしています。print javascript関数は、getElementByIdを使用してテキストエリアからコンテンツを取得し、それを出力します。しかし、ここに問題があります。テキストエリアに正しく表示するために、テキストフィールドには改行が含まれています。これらはテキストエリアには表示されません。それらは改行として表示されます。(これらは、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は、そのコンテンツに行の折り返しを適用します。これらは改行文字ではなく、そのように置き換えることはできません。

プリッティングする前に、テキストエリアと同じ幅の要素にコンテンツを追加します。

すなわち

...
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空白プロパティを使用することです。

于 2018-02-07T12:47:13.427 に答える