Длинная строка нумерации сделана правильно - PullRequest
0 голосов
/ 26 декабря 2011

Я хочу разбить длинный текст на более мелкие куски, которые будут выступать в качестве страниц.

    var longText = document.getElementById('content').innerHTML;

    for (i=0; i<10; i++) {
            var page = longText.substring(i*100,(i+1)*100);
            document.write(page + "<br /><hr />");
    }

Посмотреть это здесь на jsfiddle.

Этот код разбиваетсятекст, но глупо, разрезая также слова пополам.Было бы намного лучше, например, создавать подстроки, заканчивающиеся на последнем пробеле в определенном количестве символов (считать 100 символов, а затем вернуться к последнему пробелу).Как бы вы достигли этого?

Второй выстрел Третий выстрел

Ответы [ 2 ]

0 голосов
/ 26 декабря 2011

Для тех, кто ищет рабочий ответ:

<div id="long-text">Lorem ipsum [...]</div>


    <script>
var splitter = function(id) {
var longText = document.getElementById(id).innerHTML;

var pageLenght = 200;
var charsDone = 0;
var htmlBefore = "<p>";
var htmlAfter = "</p>";

while (charsDone <= longText.length && (pageLenght+charsDone)<longText.length) {
    var pageBox = longText.substr(lastSpace,pageLenght);
    var lastSpace = charsDone + pageBox.lastIndexOf(" ");
    var page = longText.substring(charsDone,lastSpace);
    document.write(htmlBefore + page  + htmlAfter);
    charsDone = lastSpace;
    }

    document.write(longText.substr(lastSpace,pageLenght));
}


splitter("#long-text");

Вы можете легко использовать массивы вместо записи в документ.Вы также захотите установить свой HTML для своих нужд, сделайте это в htmlBefore и htmlAfter.Смотрите это в действии здесь .

0 голосов
/ 26 декабря 2011

Я бы использовал:

function paginate(longText, pageSize) {
  var parts = longText.split(/[ \n\t]/g);
  if (parts.length == 0)
    return [];
  var pages = [parts.unshift()];
  for (var i = 0; i < parts.length; i += 1) {
    var part = parts[i];
    if (part.length + pages[pages.length - 1].length < pageSize) {
      pages[pages.length - 1] += " " + part;
    } else {
      pages.push(part);
    }
  }
  return parts;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...