Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   скрипт, обрезающий строки (https://javascript.ru/forum/dom-window/35158-skript-obrezayushhijj-stroki.html)

zlodiak 01.02.2013 10:58

скрипт, обрезающий строки
 
посоветуйте пожалуйста скрипт, который может обрезать в блоке текст до определённого количества строк

у меня есть такой . но он не подходит потому что нужно указывать конкретный родительский блок. при этом если в нём окажется вложенный например span, то скрипт не обрабатывает текст

danik.js 01.02.2013 11:05

А можно конкретнее? Где, зачем, какой текст, и какие особенности?

zlodiak 01.02.2013 11:27

в интернет-магазине описания товаров слишком длинные. хотелось бы сократить их до определённого количества строк(например до 3). но проблема в том, что описания созданы через визивиг и поэтому в тексте содержатся различные тэги типа span, div, p и т.д.

однако каждое описание находится в контейнере .text

хотелось бы что-нибудь типа такого
jQuery('.text').correctLines( 3, '' );

danik.js 01.02.2013 11:30

Думаю вы решаете проблемы не через то место в том месте. Проблема на сервере, а не в браузере. Что за движок?

zlodiak 01.02.2013 11:35

simpla. не хотелось бы править ядро. да и проще через js

рони 01.02.2013 11:44

zlodiak,
Приведите пример html код блока в котором надо обрезать текст

zlodiak 01.02.2013 11:59

<article class="item2">
	<div class="top">
		<h1>
			<a data-product="1" href="products/apple-iphone-4s-16gb">Apple iPhone 4S 16Gb</a>
		</h1>
		
		<form class="variants" action="/cart">
			<span class="price">44 000&nbsp;<span class="currency">руб</span></span>
			
			<input id="variants_1" name="variant" value="1" type="radio" class="variant_radiobutton" checked style="display:none;"/>
			
			<input type="submit" class="button buy" value="Купить" data-result-text="Добавлено" />

			<a class="credit" href="#">В кредит</a>		
			
			<span class="price">42 000&nbsp;<span class="currency">руб</span></span>
			
			<input id="variants_2" name="variant" value="2" type="radio" class="variant_radiobutton"  style="display:none;"/>
			
			<input type="submit" class="button buy" value="Купить" data-result-text="Добавлено" />

			<a class="credit" href="#">В кредит</a>		
				
		</form>
	</div>
	
	<div class="bottom">
		<div class="text"><p><span>iPhone 4 получил 3,5-дюймовый дисплей с разрешением 960 x 640 пикселей. Толщина устройства всего 9,3 мм. Передняя и задняя стороны аппарата обе плоские, выполнены из стекла, торцевая окантовка - стальная. У телефона есть фронтальная камера для видеозвонков, дополнительный микрофон для шумоподавления, а слот SIM сменился на Micro SIM. Батарея обеспечивает до 14 часов в режиме разговора, 6/10 часов в режиме веб-серфинга по 3G/Wi-Fi, 10 часов просмотра видео, 40 часов прослушивания музыки и 300 часов режима ожидания. Кроме того, добавлена поддержка Wi-Fi 802.11n. Разрешение основной камеры 5 МП, имеется поддержка видеосъемки с разрешением 1280 x 720 пикселей со скоростью 30 кадров в секунду.Дисплей 3,5 дюйма, 640х960 точек, IPS, олеофобное покрытие / Двухъядерный A5 Чип, Графический ускоритель PowerVR SGX543MP2 / 8-мегапиксельная фотокамера, HD видео (1080pх) / Bluetooth 4.0 и Wi-Fi 802.11b/g/n / гарантия - 12 месяцев.</span></p></div>
	</div>									
</article>


но набор тэгов в .text может быть самый различный так как описание набиралось в визивиг-редакторе

рони 01.02.2013 12:21

zlodiak,
попробуйте обратится к автору плагина devote

http://javascript.ru/forum/project/2...tml#post122848

рони 01.02.2013 14:08

zlodiak, почему плагин неработает я неразобрался, но поставил "костыль" с ним возможен такой вариант ...
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">
(function(e){e.fn.correctLines=function(h,j){return this.each(function(p,d){var c,b;h=(c=/^(?:.*\s)?fixline_([\d]+)(?:\s.*)?$/.exec(d.className))&&c[1]||h||3;j=j||"...<br />";b=e(d).css("display");c=e(d).css("display","block").clone(!0).css({height:"auto",position:"absolute",width:d.offsetWidth+"px"}).html("");e(d).css("display",b).after(c);for(var k=0,m=0,l=0,n=0,f=-1,a=e(d).html(),g=[];/(<.*)\s(.*>)/g.exec(a);)a=a.replace(/(<.*)\s(.*>)/g,"$1&jftF767Tgjk56&$2");a=a.split(" ");for(b=0;b<a.length&& !(a[b]=a[b].replace(/&jftF767Tgjk56&/g," "),c[0].innerHTML+=a[b]+" ",c[0].clientHeight>l&&(k=l,n=f+1,f=b-1,l=c[0].offsetHeight,++m>h));b++);if(m>h){e(d).css({height:k+"px",overflowY:"hidden"});g=a.slice(n,f+1);k=c.html(g.join(" "))[0].offsetHeight;for(b=g.length-1;0<=b;b--)if(c.html(g.join(" ")+j),c[0].offsetHeight>k)g.splice(b,1),f--;else break;a[f]+=j;a.length=f+1;e(d).html(a.join(" "))}else e(d).css({height:"auto"});c.remove()})}})(jQuery);
</script>
  <title></title>
</head>
<body>
<article class="item2">
	<div class="top">
		<h1>
			<a data-product="1" href="products/apple-iphone-4s-16gb">Apple iPhone 4S 16Gb</a>
		</h1>

		<form class="variants" action="/cart">
			<span class="price">44 000&nbsp;<span class="currency">руб</span></span>

			<input id="variants_1" name="variant" value="1" type="radio" class="variant_radiobutton" checked style="display:none;"/>

			<input type="submit" class="button buy" value="Купить" data-result-text="Добавлено" />

			<a class="credit" href="#">В кредит</a>

			<span class="price">42 000&nbsp;<span class="currency">руб</span></span>

			<input id="variants_2" name="variant" value="2" type="radio" class="variant_radiobutton"  style="display:none;"/>

			<input type="submit" class="button buy" value="Купить" data-result-text="Добавлено" />

			<a class="credit" href="#">В кредит</a>

		</form>
	</div>

	<div class="bottom">
		<div class="text"><p><span>iPhone 4 получил 3,5-дюймовый дисплей с разрешением 960 x 640 пикселей. Толщина устройства всего 9,3 мм. Передняя и задняя стороны аппарата обе плоские, выполнены из стекла, торцевая окантовка - стальная. У телефона есть фронтальная камера для видеозвонков, дополнительный микрофон для шумоподавления, а слот SIM сменился на Micro SIM. Батарея обеспечивает до 14 часов в режиме разговора, 6/10 часов в режиме веб-серфинга по 3G/Wi-Fi, 10 часов просмотра видео, 40 часов прослушивания музыки и 300 часов режима ожидания. Кроме того, добавлена поддержка Wi-Fi 802.11n. Разрешение основной камеры 5 МП, имеется поддержка видеосъемки с разрешением 1280 x 720 пикселей со скоростью 30 кадров в секунду.Дисплей 3,5 дюйма, 640х960 точек, IPS, олеофобное покрытие / Двухъядерный A5 Чип, Графический ускоритель PowerVR SGX543MP2 / 8-мегапиксельная фотокамера, HD видео (1080pх) / Bluetooth 4.0 и Wi-Fi 802.11b/g/n / гарантия - 12 месяцев.</span></p></div>
	</div>
</article>
<script language="JavaScript" type="text/javascript">
$(".text span").correctLines(3,'')
</script>
</body>
</html>

DreamTheater 01.02.2013 14:24

https://github.com/epeli/underscore.string

_.string.lines(str)


Часовой пояс GMT +3, время: 15:59.