Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS]Długość tekstu
Forum PHP.pl > Forum > Przedszkole
Snowak
Witam,
mam komórkę o szerokości 60px i chce, aby tekst jeżeli się w niej nie mieści został skrócony a na jego końcu dodawałoby się trzykropek, czyli np. z Alamakota Alama...

Problem jest taki, że nie można tutaj po prostu ustalić maksymalnej ilości znaków, bo znaki mają różną szerokość... Więc czy są w JS jakieś funkcje zwracające szerokość danego znaku (oczywiście podając jaka to czcionka)? A może da się to policzyć w jakiś prostszy sposób, np. korzystając z parametrów tej komórki?

Z góry dziękuję za pomoc.
GrayHat
Witaj.
Obiekt div posiada atrybut offsetWidth

Kod
<div id="someDiv">
lorem ipsum lorem ipsum lorem ipsum
</div>

<script type="text/javascript">
alert(document.getElementById('someDiv').offsetWidth);
</script>


pokombinuj z tym winksmiley.jpg
1010
Można pomierzyć literki np i ma 1px a m odpowiednio 9 px, do tego odstepy... i na podstawie obliczyć długość... Nie wiem czy to rozwiązanie nie jest trochę na około...
Snowak
Cytat(GrayHat @ 27.01.2008, 20:06:32 ) *
Witaj.
Obiekt div posiada atrybut offsetWidth

Kod
<div id="someDiv">
lorem ipsum lorem ipsum lorem ipsum
</div>

<script type="text/javascript">
alert(document.getElementById('someDiv').offsetWidth);
</script>


pokombinuj z tym winksmiley.jpg


Ten parametr zdaje się nie zawsze jest obsługiwany przez IE. Ja użyłem czegoś takiego:
  1. var offset = (parseInt(document.getElementById(a).scrollWidth) - parseInt(curS = document.getElementById(a).clientWidth));

I jeżeli jest większe od 0 to tekst wystaje... i wtedy w pętli while odejmuje po znaku aż nie będzie wystawać, kasuje jeszcze 3 ostatnie znaki i wstawiam '...'

Działa pięknie snitch.gif Dzięki za sugestie
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.