Avatar billede 3string Nybegynder
19. februar 2004 - 07:31 Der er 11 kommentarer og
1 løsning

aflæsning af værdien "left"

Jeg kan nemt sætte værdien :

document.getElementById("idet2").style.left

men kan jeg ikke aflæse den?

f.eks:

document.getElementById("idet2").style.left = document.getElementById("idet2").style.left + 2
Avatar billede mik789 Nybegynder
19. februar 2004 - 08:38 #1
prøv med offsetLeft. Altså:

document.getElementById("idet2").style.left = document.getElementById("idet2").offsetLeft + 2

Se også: http://www.mozilla.org/docs/dom/domref/dom_el_ref19.html#1028018

//mik
Avatar billede roenving Novice
19. februar 2004 - 15:34 #2
Du kan som udgangspunkt kun aflæse style-properties som er sat direkte i tagget !-)

Altså kan du ikke aflæse:

<style type="text/css">#minDiv{left:30px;}</style>
...
<div id="minDiv">noget</div>

-- men godt:

<div id="minDiv2" style="left:40px;">noget</div>

-- og så den lille krølle, at har du først sat en style-property med javascript, kan du aflæse den senere !-)
Avatar billede 3string Nybegynder
19. februar 2004 - 16:38 #3
--> mik789
offsetleft du ikke, det havde jeg nemmelig prøvet ;)

--> roenving
Jeg kan ikke få
<div id="minDiv2" style="left:40px;">noget</div>
til at virke(var endelig sådan jeg fårst prøvede det), men grundet ufattelig dårlig tåldmodighed fandt jeg en roundabout ved at lave et array med kordinaterne i stedet.
Jeg har derfor ikke afprøvet din sidste løsning, men siger du det virker, så er det nok ikke helt galt.

Jeg vender lige tilbage, når jeg får taget mig sammen til at teste det, du kan evt lægge et svar i mellemtiden, hvis du vil.

/3String
Avatar billede roenving Novice
19. februar 2004 - 16:51 #4
>>3string

_ikke_ offsetleft, men offsetLeft !-)

Javascript er case sensitivt, så det er to forskellige variabler, hvor den ene er en ny og den anden en native property på html-elementer ...

<div id="minDiv" style="position:relative;left:40px;" onclick="alert(this.offsetLeft);">En div-tekst</div>

<div id="minDiv" style="left:40px;" onclick="alert(this.style.left);">En div-tekst</div>

-- som du vil kunne se kræver offsetLeft, at elementet faktisk har en offset fra en placering (og hvis du fjerner position:relative; er det ikke flyttet !-)

.style.left aflæser bare propertyen, uden i øvrigt at bekymre sig om, om elementet i virkeligheden er flyttet, for det er det jo faktisk ikke uden en position:relative; !o]

-- og så returnerer offsetLeft et tal, mens .style.left returnerer en tekst-streng, som så skal parses:

document.getElementById("idet2").style.left = parseInt(document.getElementById("idet2").offsetLeft,10) + 2 + 'px';

-- og styles skal have målestok på, så der skal sættes 'px' på ...
Avatar billede roenving Novice
19. februar 2004 - 16:54 #5
Hov:

document.getElementById("idet2").style.left = parseInt(document.getElementById("idet2").style.left,10) + 2 + 'px';
Avatar billede mik789 Nybegynder
19. februar 2004 - 16:57 #6
"-- som du vil kunne se kræver offsetLeft, at elementet faktisk har en offset fra en placering (og hvis du fjerner position:relative; er det ikke flyttet"

eler mao: offsetLeft giver dig et mål i forhold til nærmeste omgivende box der selv har egenskaben position sat til enten relative eller absolute. Hvis ingen position på de omgivende boxe bliver målet i forhold til "roden", dvs. <body> i quirks mode, <html> i standard mode. Du kan evt. teste ved at klikke på den grå, den gule og grønne box her: http://www.e-tidsskrift.dk/dev/position.php
Avatar billede 3string Nybegynder
29. september 2004 - 13:16 #7
jeg er ved at rydde op, så jeg lukker lige her, tak for jeres hjælp.
Avatar billede roenving Novice
29. september 2004 - 14:00 #8
Kunne du da ikke bruge noget ?-)
Avatar billede 3string Nybegynder
29. september 2004 - 14:23 #9
uha nu skal hukommelsen startes op.

Jeg mener problemet var at jeg ikke kunne aflæse de værdier FØR jeg selv havde ændret dem.

Jeg lavede derfor en workaround med noget serverscript indover.
Ikke kønt, men det virkede.
Avatar billede roenving Novice
29. september 2004 - 14:39 #10
*lol* -- ja det skulle jeg også ...

-- men i så tilfælde har du jo netop fået korrekte svar, da f.eks. 19/02-2004 16:51:11 + 16:54:20 netop udpensler de problemer (og også anviser en løsning på det umiddelbare problem !-)
Avatar billede 3string Nybegynder
29. september 2004 - 15:00 #11
arrrh, det er vist rigtig.
Jeg kan ikke huske om jeg brugte dit svar, men jeg tror lige jeg vil checke efter.

Hvis du er interesseret i pointene, så opretter jeg gerne et nyt spørgsmål til dig?
Avatar billede 3string Nybegynder
29. september 2004 - 15:01 #12
nåja, det bliver tidligst i aften, jeg får kigget på det, men jeg vender tilbage med resultatet ;)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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