2016-05-05 12 views
0

テキストファイルに印刷するときに、文字列の '\ n'に明示的に入れても、各メッセージの後に改行なしで文字列を出力する文字列があります。だから私は文字列をまとめる方法は次の通りです:Javascript;文字列を新しい行に分割する

私はサーバーにメッセージを送ってから、それをすべてのクライアントに返します。データがクライアントに届くと、それはtext.Contentを取得し、divに出力します。

var stringMessage= 'session\n' + ''; 

socket.on('output', function(data){ 
     if(data.length){ 
      //loop through all data. 
       for(var x=0; x<data.length; x=x+1){ 
       if(data[x].sessionId == sessionId){ 
        var message = document.createElement('div'); 
        message.setAttribute('class','chat-message'); 
        message.setAttribute('id','chat-message'); 
        message.textContent = data[x].name + ': ' + data[x].message; 
        var chat_message = message.textContent; 
        stringMessage = stringMessage +'\n'+ chat_message + '\n'; 

        //Append 
        messages.insertBefore(message, messages.firstChild); 
        messages.appendChild(message); 
        messages.scrollTop = messages.scrollHeight;//(message, messages.firstChild); 
       } 
       } 
     } 
}); 

文字列内のすべてのメッセージを持つstringMessage文字列を取得する関数があります。

function grabChat(){ 
    var hiddenElement = document.createElement('a'); 

    hiddenElement.href = 'data:attachment/text,' + encodeURI(stringMessage); 
    hiddenElement.target = '_blank'; 
    hiddenElement.download = sessionId+'.txt'; 
    hiddenElement.click(); 
} 

私が持っているその場合はそうのようなメッセージ: 「アンドリュー:こんにちは」 「アンドリュー:さようなら」 、その後、私はそれがとても似表示する関数を印刷: 「sessionIdAndrew:HelloAndrew:さようなら」

すべてのメッセージの間に新しい行を作成するにはどうすればよいですか?私はあなたがコードで見ることができるように '\ n'を試みました

答えて

2

これはHTML出力です。 <br />\nを置き換えます

CSSを使用したエルス
var stringMessage= 'session<br />\n' + ''; 

、あなたがする要素のスタイルを設定する必要があります。

white-space: pre-wrap; 
+0

なるほど、その1行ではなく、ときに私がメモ帳でtxtファイルを開いたときと思われます私は崇高なテキストでそれを開きます2彼らは別の行にあります –

+0

@AndrewONeill OSはどのように '\ n'と' \ r \ n'をレンダリングするかの違いがあります。 –

+0

Unixベース(Linux、Mac)では '\ n'(改行)を使用している間、Windowsは' \ r \ n'(キャリッジリターン/ラインフィード)を使用します。したがって、Windowsで開いたり保存したりすると、Linuxで開くと2行表示されます。あなたが理解したいと思っています。 –

関連する問題