powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Как скрыть фрагмент текста?
6 сообщений из 6, страница 1 из 1
Как скрыть фрагмент текста?
    #36479858
CacheLot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Работаю с tablePane, нужно вывести в таблицу текстовое свойство достаточно большого размера, и чтоб не терять компактности и наглядности хочу скрыть часть текста.. Как это сделать? Чтоб допустим в записях, содержащих более 150 символом остальные были скрыты и при необходимости их можно было отобразить, потом опять скрыть и так далее...
Начал так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Method Test(pTable As %ZEN.Component.tablePane, pName As %String, pSeed As %String) As %Status
{
    s txt=%query("Text ")
    s L=$L(txt)
    If L> 150  
    {
	s New=$E(txt, 1 , 150 )_"..."
    &html<
    <p>#(New)#</p>
     >   
    }
    else
    {
	&html<
    <p>#(txt)#</p> 
     >
    }
	Quit $$$OK
}



Дальше не знаю куда копать..
...
Рейтинг: 0 / 0
Как скрыть фрагмент текста?
    #36479898
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
дай ссылку в инете посмотреть где это реализовано
...
Рейтинг: 0 / 0
Как скрыть фрагмент текста?
    #36480186
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CacheLot, например так:
Код: plaintext
1.
2.
3.
4.
5.
 ;должно быть на странице или во внешнем css
 &html<<style type="text/css">.short {width:150em;overflow:hidden;}</style>> 
 ....
 if L> 150   &html<<div class="short">#(New)#</div>>  
 ....
...
Рейтинг: 0 / 0
Как скрыть фрагмент текста?
    #36480192
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ах, да и высоту тоже ограничить
...
Рейтинг: 0 / 0
Как скрыть фрагмент текста?
    #36481990
CacheLot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал тестовый пример:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
//Создаём текст с ограничением на количество выводимых символов

Method Test(pTable As %ZEN.Component.tablePane, pName As %String, pSeed As %String) As %Status
{
    s txt=%query("Text")
    s L=$L(txt)
    If L> 100   
    {
	s New=$E(txt, 1 , 100 )
	s tId0=%query("ID")_0
	s tId1=%query("ID")_1
&html<
<div id="#(tId0)#">
   <p>#(New)#</p>
   <a href="#" onClick="document.getElementById('#(tId0)#').style.display='none'; 
   document.getElementById('#(tId1)#').style.display='';return false;">
   Далее »
   </a>
</div>      


<div id="#(tId1)#" style="display:none">
    <p>#(txt)#</p>
    <a href="#" onClick="document.getElementById('#(tId1)#').style.display='none';
    document.getElementById('#(tId0)#').style.display='';return false;">
    » Скрыть
    </a>
</div>
>
	   
    }
    else
    {
&html<
    <p>#(txt)#</p> 
     >
    }
	
	Quit $$$OK
}


Работает, за основу взял статейку
Вот так примерно я и планировал: так

Может есть ещё более изящные методы для реализации этой идеи?
Ещё хотелось бы обрезать текст по словам, нужно подумать как реализовать...
...
Рейтинг: 0 / 0
Как скрыть фрагмент текста?
    #36482046
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Более изящно будет вынести скрипт. Примерно так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 s VL= 150  ;отображаемое количество в параметр куда-нибудь
 
 ;в обработке результатов запроса 
 s txt=%query("Text "), L=$L(txt)
 s main=$E(txt, 1 ,VL), add=$E(txt,VL,L) ;основное и дополнительный текст
 w "<p><span class='main' title='",txt,"'>",main,"</span>" ;выводим основную часть текста
 if L>VL { 
  w  "<a href='#' class='next'>Далее >></a>" ;если необходимо показываем ссылку 'Далее'
  w "<span class='add'>",add,"<span>"
 }
 w "</p>"

В CSS:
Код: plaintext
1.
 .add {display:none;}

В скрипте js (отдельный подключаемый файл) или на странице:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
 //В зависимости от того пользуетесь ли Вы js библиотеками, нужна ли кроссбраузерность
 //Но общая идея такая:
 //После загрузки страницы, получить все ссылки Далее (по классу 'next') 
 //и привязаться к событию click (одним обработчиком)
 //или анализировать click на dataGrid (предпочтительней)
 //и отбирать нужные события click по элементу <a> c классом 'next'
 //В обработчике получать источник события - элемент <a>, находить следующий за ним элемент
 //span.add и переключать его style.display между "none" и ""
 //Пример (не проверял, навскидку) для IE без js-библиотек  
 
 //При загрузке страницы
 window.attachEvent("onload",function(){
    var aArr=document.getElementsByTagName("A"); //для всех ссылок
    for(var i= 0 ;i<aArr.length;i++){
      var a=aArr[i]; if (a.className!="next") continue; //ищем только необходимые
      a.attachEvent("onclick",nextClick); //привязываем обработчик nextClick
   }
 });

 //Обработчик
 function nextClick(evt){ 
  var a=evt.sourceElement;  if (!a) return; //И другие проверки
  var add=a.nextSibling; if(!add) return; //И другие проверки
  add.style.display=(add.style.display=="")?"none":"";
 }

...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Как скрыть фрагмент текста?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]