Длина строки в многострочном тексте
Здравствуйте, уважаемые. Подскажите, есть ли решение у такой задачи.
Есть div или textarea, в который вводится произвольный текст на несколько сточек. Текст выравнивается по левому краю, поэтому длина каждой строки (от первой до последней буквы) разная. Необходимо посчитать в пикселях или в символах, сколько занимает та или иная строка. Или хотя бы выделить её из текста средствами JS. У меня пока нет вариантов. Такое вообще можно сделать? |
я неуверен только насчёт количества пикселей и ньюлайна (\n в split) в windows или mac. или там в js так можно?
<textarea> Да это же мистер оливье!!!!!!!!! </textarea> <script> var area = document.querySelector('textarea'); var lines = area.value.split("\n"); var biggest; lines.forEach(function(line){ if(!biggest||line.length>biggest.length){ biggest = line; } }); var fontSize = parseInt(getComputedStyle(area,null).fontSize); alert("Самая длинная строка : "+biggest+'\nКол-во символов : '+biggest.length+'\nКол-во пикселей : '+(fontSize*biggest.length)); </script> |
осторожнее с getComputedStyle в IE<9 не работает
http://beta.javascript.ru/tutorial/s...tcomputedstyle |
Не не не, Девид Блейн. Это же обман:
fontSize * biggest.length Длину строки в пикселях не так нужно узнавать. |
Цитата:
Цитата:
|
Цитата:
|
Цитата:
1. Создаем div с размерами, равными textarea. 2. Берём из textarea содержимое, делим на строки и каждую строку оборачиваем в span. 3. Кладем span-ы в div, div в body, скрываем. 4. Вычисляем offsetWidth для span-ов 5. Удаляем div. |
Ах, да. Разделять нужно так:
value.split(/\r|\n/g); |
в той теме умножали на числа от 10 до 12 - размеры шрифта.
но не вы, Pavel M. :) B~Vladi, спасибо. так яснее. |
Часовой пояс GMT +3, время: 13:31. |