Avatar billede kometen79 Nybegynder
11. marts 2005 - 10:32 Der er 10 kommentarer og
1 løsning

Længden af tekst i px

Jeg har et menusystem som bliver genereret fra en database. Men jeg kunne godt tænke mig en function der på en eller anden måde kan beregne den præcise længden. Jeg har prøvet med len(rs.text) men det bliver ikke helt godt.

Jeg ved også godt at det ikke er helt simpelt, men hvad ved jo aldrig hvad der kan lade sig gøre.

Min tekst er Verdana 10px.
Avatar billede milandt Nybegynder
11. marts 2005 - 10:43 #1
Altså længden af en tekst i px?

Gør det med javascript. Sæt teksten i et span-element med et id, og mål width på det span element.

Prøv følgende:

<span id="menutext" onClick="alert('width:'+document.getElementById('menutext').offsetWidth+'px')">Lorem ipsum</span>
Avatar billede kometen79 Nybegynder
11. marts 2005 - 12:04 #2
Kanon! Hvor forspørger jeg værdien i ASP. Min strin ser sådan ud: Response.Write("this.item_width"&main_menuen + 1&" = 65;")Hvor 65 skal være værdien fra JAVA Scriptet
Avatar billede milandt Nybegynder
11. marts 2005 - 12:42 #3
Well - det er ikke umiddelbart noget man gør, men der er forskellige måder at få javascript-værdier over i asp. Det kunne fx være igennem form-data eller i en querystring, men hvis du bare har brug for at skrive værdien ud (med response.write som du viser herover) kan følgende så bruges?

<span id="menutext">Lorem ipsum</span><br><br>
<%="this.item_width"&main_menuen + 1&" = "%>
<script language="javascript" type="text/javascript">
<!--
document.write(document.getElementById('menutext').offsetWidth + ";");
// -->
</script>
Avatar billede kometen79 Nybegynder
11. marts 2005 - 16:12 #4
OK, det virker, den trækker værdierne ud, men <SPAN> target laver uorden i mit script, skal det placeres et specielt eller er der andre muligheder så det ikke kommer med i koden?
Avatar billede milandt Nybegynder
11. marts 2005 - 17:20 #5
Hmm - du er nødt til at have noget der wrapper den tekst du vil måle bredden af.. Hvordan laver det uorden i din kode? Måske kan det løses ved at style span-tagget, eller evt sætte et div-tag omkring og style det så det bliver inline..

evt sæt det id der bliver målt på det element der i forvejen wrapper din tekst?
Avatar billede kometen79 Nybegynder
14. marts 2005 - 16:34 #6
Hej igen, Kan du ikke prøve at give et eksempel på det? Problemmet er at den skriver <SPAN> ud i javascript koden og det for den til at fejle. Håber du kan hjælpe
Avatar billede milandt Nybegynder
14. marts 2005 - 19:00 #7
Dette er i al fald een måde at overføre en værdi fra javascript til asp. Håber det giver lidt inspiration.

<html>
<head>
    <title>My page</title>   
    <script language="javascript" type="text/javascript">
    <!--
        function setWidth() {
            top.location.href = "default.asp?menuwidth="+document.getElementById('menutext').offsetWidth;
        }
    // -->
    </script>
</head>
<body onLoad="setWidth();">
    <span id="menutext">Lorem ipsum</span><br><br>
    <%
        if request.querystring("menuwidth") <> "" then
            response.write "Menuen er "&request.querystring("menuwidth")&"px bred."
        end if
    %>
</body>
</html>
Avatar billede kometen79 Nybegynder
31. marts 2005 - 10:45 #8
Jeg er jeg tilbage. Er der en anden måde hvorpå jeg inkluderer Javascript værdien i ASP f.eks.
<%menuwidth= "+document.getElementById('menutext').offsetWidth"%>

eller lignende? Jeg er klar over at ovenstående ikke kan lade sig gøre ;)

Jeg kan sagtens få udskrevet værdien, men jeg vil gerne smide den i en database.
Avatar billede milandt Nybegynder
31. marts 2005 - 11:08 #9
Nej.

Du skal tænke på at Javascript bliver afviklet på klientsiden efter siden er genereret og blevet sendt afsted fra serveren. Asp afvikles på serveren inden siden sendes afsted.

Du kan altså ikke indsætte en javascript variable i din asp-kode da denne først blive beregnet ude på klienten.

Ovenstående løsning gør så det at javascriptet indlæser den pågældende side igen med en querystring som kan aflæses med asp. Vi er altså nødt til på en eller anden måde at kalde serveren en gang til efter browseren har beregnet værdien vha javascript.

Men du kan jo sagtens smide værdien ned i en database ved at bruge ovenstående eksempel.. request.querystring("menuwidth")
Avatar billede milandt Nybegynder
31. marts 2005 - 11:08 #10
tror i øvrigt jeg har svaret på dit spørgsmål :)
Avatar billede kometen79 Nybegynder
31. marts 2005 - 11:42 #11
Kanon, Tak for et godt og grundigt svar.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester