2015-09-06 3 views
0

Я пытаюсь вывести строки текстового файла в div в HTA. Сам текст подходит просто прекрасно, однако линии не переносятся. Вместо этого текст группируется по одной большой строке. Если я печатаю сообщение в msgbox, то появляются правильные, разделенные строки.Многострочный текстовый файл html

function updateTPtally() 
{ 
    var fso, appdir, messagefile, ts, messagetext, line; 
    fso = new ActiveXObject("Scripting.FileSystemObject"); 

    if (MESSAGE_FILE_NAME7.indexOf("\\") == -1) { 
     appdir = unescape(fso.GetParentFolderName(location.pathname)); 
     messagefile = fso.BuildPath(appdir, MESSAGE_FILE_NAME7); 
    } else { 
     messagefile = MESSAGE_FILE_NAME7; 
    } 

    try { 
     // Open the message-of-the-day file as a TextStream. 
     ts = fso.OpenTextFile(messagefile, 1); 
     messagetext = ""; 
     while (! ts.AtEndOfStream) { 
      line = ts.ReadLine(); 
      // If the line contains text, enclose in <p> element; 
      // otherwise, construct a blank line with a nonbreaking space. 
      if (line.length > 0) 
       line = line.replace(/^(.*)$/, "$1"); 
      else 
       line = "<p>&nbsp;</p>"; 
      messagetext += line; 
     } 
     ts.Close(); 
    } 

    // Construct an error message if an error occurred. 
    catch(err) { 
     messagetext = "<p>Can't display the message of the day.</p>" 
     + "<p>&nbsp;</p>" 
     + "<p>Error <b>0x" + hex(err.number) + "</b><br />" 
     + err.description + "</p>"; 
    } 

    // Update the innerHTML element of the textarea element with the 
    document.getElementById("TPtallymemo").innerHTML = messagetext; 
} 

EDIT: Я добавил линию = line.replace (/ \ п/г, "
");

Это похоже на работу, однако первое слово текста. Это мой текстовый файл:

Hello. 

This should be line two. And written all in one line. 

This should be line three, and also written on one line. 

Это то, что печатает в моем пролете:

Hello. 


This 
should be line two. And written all in one line. 


This 
should be line three, and also written on one line. 
+0

В Windows символ новой строки '\ r \ n'. Вы должны заменить это вместо '\ n'. – Teemu

ответ

0

Вы не заключаете строки по тексту после их замены. Кроме того, вы не должны заключать неразрывное пространство, поскольку учетная запись элементов абзаца должна быть правильно отделена друг от друга.

Всего лишь одно небольшое окончательное наблюдение: вы должны вызвать AtEndOfStream() с круглыми скобками в состоянии while.

messagetext = ""; 
while (! ts.AtEndOfStream()) { 
    line = ts.ReadLine(); 
    // If the line contains text, enclose in <p> element; 
    // otherwise, construct a blank line with a nonbreaking space. 
    if (line.length > 0) 
     line = line.replace(/^(.*)$/, "<p>$1</p>"); 
    messagetext += line; 
} 
+0

Можете ли вы говорить дальше о том, что мне нужно сделать, чтобы приложить текст? –

+0

Элементы абзаца в HTML разделены по умолчанию, поэтому вам не нужно создавать пустые строки (добавляя неразрывное пространство) между ними, вы могли бы, если бы захотели, но это было бы излишним. – fixmycode

+0

Какие строки не прилагаются должным образом? Как в разделе «Вы не включаете строки в текст после их замены» –

Смежные вопросы