Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как обрезать длинный текст, truncate, substring, etc 
V
    Опции темы
olegti
Дата 9.7.2009, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 9.7.2009

Репутация: нет
Всего: нет



Есть табличка, у которой размеры ячеек фиксированые(по ширине и высоте). Мне нужно сделать так, чтобы тогда в ячейку попадает очень длинный текст, он её не растягивал по высоте, а сам сокращался до многоточия, т.е. если 
"UCA - United Canal Agency GmbH Brunsbuttel", то чтобы было так "UCA - United Canal Agency...".

текст в ячейку пападает через php переменную 

<td class='registed_content_1_2'>$company->company_name</td>

как на картинке!

Это сообщение отредактировал(а) olegti - 9.7.2009, 15:01

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  Companies_registered_copy.jpg 91,59 Kb
PM MAIL   Вверх
Veve
Дата 9.7.2009, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 1.1.2005
Где: Латвия, Рига

Репутация: 2
Всего: 13



Ну, а как он туда попадает, чем таблица формируется (PHP,ASP и т.д)? Я же предполагаю она не статическая. 
Ну значит посчитай сколько символов влезает в ячейку + ... и перед тем как вывести таблицы обрубай текст (используй функцию наподобие substr) и выводи обрубленный текст + ...
PM MAIL ICQ Skype MSN   Вверх
bars80080
Дата 9.7.2009, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 44
Всего: 315



а как текст попадает в таблицу?
гораздо проще всё формируется на стороне сервера


если же js, то:

Код

<table id="qw"> ... </table>


Код

var td = document.getElementById('qw').getElementsByTagName('td');
var tdc = td.length, str;
for(var i = 0; i < tdc; i++) {
    str = td[i].innerHTML;
    if(str.length > 30) { str = str.slice(0, 30);
    td[i].innerHTML = str; }
}

PM MAIL WWW   Вверх
ksnk
Дата 9.7.2009, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



olegti, Пробежаться по ячейкам таблицы и сравнить scrollWidth и clientWidth. Если scrollWidth больше - уменьшаем текст...


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
olegti
Дата 9.7.2009, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 9.7.2009

Репутация: нет
Всего: нет



bars80080,   текст в ячейку пападает через php переменную 

<td class='registed_content_1_2'>$company->company_name</td>
PM MAIL   Вверх
Veve
Дата 9.7.2009, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 1.1.2005
Где: Латвия, Рига

Репутация: 2
Всего: 13



Цитата(olegti)

текст в ячейку пападает через php переменную 
<td class='registed_content_1_2'>$company->company_name</td>


В таком случае используй функцию: string substr (string str, int start [, int length])

Код

<td class='registed_content_1_2'>substr ($company->company_name,0,100).'...'</td>


Вместо 100 подбери нужное тебе значение.
PM MAIL ICQ Skype MSN   Вверх
olegti
Дата 9.7.2009, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 9.7.2009

Репутация: нет
Всего: нет



Veve,  объясни пожалуйста как и где мне надо объявить эту функцию 

string substr (string str, int start [, int length])
PM MAIL   Вверх
Veve
Дата 9.7.2009, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 1.1.2005
Где: Латвия, Рига

Репутация: 2
Всего: 13



Нигде ничего объявлять не нужно. Просто  исправь свой код (ну или не свой  smile) на этот:
Код

<td class='registed_content_1_2'>substr ($company->company_name,0,100).(strlen($company->company_name)>100?'...':'')</td>


Эта функции PHP, которая возвращает часть строки. То есть в твоём случае от названия компании начиная с 0 символа по 99 отрежется часть строки и к ней добавиться три точки.... Стоит менять число 100 в зависимости от ширины твоей ячейки... Можно просто поэкспериментировать. 

Это сообщение отредактировал(а) Veve - 9.7.2009, 15:55
PM MAIL ICQ Skype MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0656 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.