Javascript: добавлять перерыв после каждых 100 символов

Если я напишу длинным текстом, например, это:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Текст уходит со страницы, есть идея исправить, через каждые 100 символов можно было сделать тег <br />. Но я не знаю, как это сделать.

Спасибо за любую помощь!


person Adam Halasz    schedule 07.07.2010    source источник
comment
Вы обнаружите, что на самом деле это не вызывает серьезных проблем. Создание такой длинной текстовой строки обычно - лишь то, что вы делаете в тестовой среде.   -  person Andrew    schedule 07.07.2010
comment
dup: stackoverflow.com/questions/1772941/   -  person Haim Evgi    schedule 07.07.2010
comment
Это не текст. Обычный текст содержит слова (буквы с пробелами) и автоматически прерывается вашим браузером.   -  person GOsha    schedule 07.07.2010
comment
Просто чтобы ответить на ваш вопрос str = str.replace(/(.{100})/g, "$1<br/>");   -  person Amarghosh    schedule 07.07.2010
comment
без вставки ‹/br› s.replace (/ ([^ \ n] {100}) / g, '$ 1 \ n');   -  person DomreiRoam    schedule 07.07.2010
comment
@DomreiRoam, если рассматриваемый элемент не имеет white-space: pre; или что-то подобное, что позволяет \n проходить, вам понадобится <br>.   -  person Delan Azabani    schedule 07.07.2010


Ответы (2)


Просто используйте следующее свойство CSS для элемента, который вы хотите принудительно перенести:

word-wrap: break-word;

Никакого JavaScript не требуется!

Если вы действительно хотите использовать JavaScript (для концепции; CSS лучше для доступности и простоты), тогда вперед.

Да, и еще одна вещь, если вы используете шрифт, который не является моноширинным (а скорее пропорциональным), обрезка 100 символов может быть неэффективной. В одной строке может быть 100 символов i, а в следующей - еще сотня символов m, которые сильно различаются по размеру.

О, и еще, вы не можете просто применить замену регулярного выражения к innerHTML, если только это не весь текст. Если там могут быть другие элементы, вы должны фактически перебрать узлы, применяя технику только к текстовым узлам.

Да, и еще вещь, не беспокойтесь. Слишком много проблем с javascript.

person Delan Azabani    schedule 07.07.2010

Вы можете попробовать следующий код

str = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';

len = str.length;
loop = len / 100;
document.write(loop);
document.write('<br>');

for(i=0; i<=loop; i++){
  document.write( str.slice( i*100, (i*100)+100) );
  document.write('<br>');
}
person jimy    schedule 07.07.2010