Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JS]Długość tekstu
Snowak
post 27.01.2008, 19:50:31
Post #1





Grupa: Zarejestrowani
Postów: 78
Pomógł: 2
Dołączył: 13.12.2007

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
GrayHat
post 27.01.2008, 20:06:32
Post #2





Grupa: Zarejestrowani
Postów: 566
Pomógł: 18
Dołączył: 23.08.2003
Skąd: Łomża

Ostrzeżenie: (0%)
-----


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


--------------------
*Note: No animals were killed durning the construction of this post.
Go to the top of the page
+Quote Post
1010
post 27.01.2008, 20:44:57
Post #3





Grupa: Zarejestrowani
Postów: 749
Pomógł: 37
Dołączył: 3.10.2006

Ostrzeżenie: (0%)
-----


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...


--------------------
Go to the top of the page
+Quote Post
Snowak
post 28.01.2008, 11:05:17
Post #4





Grupa: Zarejestrowani
Postów: 78
Pomógł: 2
Dołączył: 13.12.2007

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 3.06.2024 - 19:14