Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.11.2011, 02:10
Интересующийся
Отправить личное сообщение для Rembrant Посмотреть профиль Найти все сообщения от Rembrant
 
Регистрация: 04.11.2010
Сообщений: 14

Длина строки в многострочном тексте
Здравствуйте, уважаемые. Подскажите, есть ли решение у такой задачи.
Есть div или textarea, в который вводится произвольный текст на несколько сточек. Текст выравнивается по левому краю, поэтому длина каждой строки (от первой до последней буквы) разная. Необходимо посчитать в пикселях или в символах, сколько занимает та или иная строка. Или хотя бы выделить её из текста средствами JS. У меня пока нет вариантов. Такое вообще можно сделать?
Ответить с цитированием
  #2 (permalink)  
Старый 28.11.2011, 09:39
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

я неуверен только насчёт количества пикселей и ньюлайна (\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>
Ответить с цитированием
  #3 (permalink)  
Старый 28.11.2011, 10:44
Лаборант :-)
Отправить личное сообщение для Pavel M. Посмотреть профиль Найти все сообщения от Pavel M.
 
Регистрация: 08.11.2011
Сообщений: 806

осторожнее с getComputedStyle в IE<9 не работает
http://beta.javascript.ru/tutorial/s...tcomputedstyle
Ответить с цитированием
  #4 (permalink)  
Старый 28.11.2011, 19:01
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Не не не, Девид Блейн. Это же обман:
fontSize * biggest.length


Длину строки в пикселях не так нужно узнавать.
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
Ответить с цитированием
  #5 (permalink)  
Старый 29.11.2011, 09:06
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Pavel M. Посмотреть сообщение
осторожнее с getComputedStyle в IE<9 не работает
http://beta.javascript.ru/tutorial/s...tcomputedstyle
я знаю. я не задавался целью сразу писать кроссбраузерный код.

Сообщение от B~Vladi Посмотреть сообщение
Не не не, Девид Блейн. Это же обман:
fontSize * biggest.length


Длину строки в пикселях не так нужно узнавать.
говорю же, неуверен как бы вы это сделали:?
Ответить с цитированием
  #6 (permalink)  
Старый 29.11.2011, 10:24
Лаборант :-)
Отправить личное сообщение для Pavel M. Посмотреть профиль Найти все сообщения от Pavel M.
 
Регистрация: 08.11.2011
Сообщений: 806

Сообщение от melky
говорю же, неуверен как бы вы это сделали:?
была тема про расширяющийся input - там предлагали разные способы как узнать длину строки текста input="text" с автошириной
Ответить с цитированием
  #7 (permalink)  
Старый 29.11.2011, 10:33
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от melky
как бы вы это сделали:?
Да тут всё просто:
1. Создаем div с размерами, равными textarea.
2. Берём из textarea содержимое, делим на строки и каждую строку оборачиваем в span.
3. Кладем span-ы в div, div в body, скрываем.
4. Вычисляем offsetWidth для span-ов
5. Удаляем div.
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф

Последний раз редактировалось B~Vladi, 29.11.2011 в 10:36.
Ответить с цитированием
  #8 (permalink)  
Старый 29.11.2011, 10:38
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Ах, да. Разделять нужно так:
value.split(/\r|\n/g);
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
Ответить с цитированием
  #9 (permalink)  
Старый 29.11.2011, 13:56
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

в той теме умножали на числа от 10 до 12 - размеры шрифта.

но не вы, Pavel M.

B~Vladi, спасибо. так яснее.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запуск скрипта с адресной строки olga153b Events/DOM/Window 3 24.09.2012 11:34
Видимость строки таблицы sslab Events/DOM/Window 8 04.12.2011 21:58
Выделение строки в таблице posta ExtJS 5 23.06.2011 12:31
Поиск в тексте javascript jQuery 3 31.05.2011 11:40
Не работает js, длина строки undefined vvsh Общие вопросы Javascript 6 31.10.2009 16:36