Avatar billede fastpoint Nybegynder
21. marts 2010 - 00:32 Der er 14 kommentarer og
1 løsning

Gemme state på webside

Hej:)

Jeg har lavet sådan en side hvor jeg kan bevæge et div/billede rundt med drag & drop.

Hvordan kan jeg gemme state for dette?
Her mener jeg hvis jeg f.eks har flyttet div elementet helt op i hjørnet så vil jeg gerne have at den fortsat er der næste gang jeg åbner min html side.

Jeg kan ikke gemme source da den er uændret, men informationen må da være tilgængelig?

mvh
Fastpoint
Avatar billede fastpoint Nybegynder
21. marts 2010 - 00:54 #1
jeg har forsøgt med inner html på body, men det ser ikke ud til at der rent faktisk ændres på source.

det skal siges at jeg benytter et gratis script til at flytte på et element.
Avatar billede keysersoze Guru
21. marts 2010 - 08:55 #2
Om ændringen kan ses i din source eller ej gør ikke den store forskel - for hvis ikke du gør andet vil den jo alligevel blive skrevet på ny næste gang brugeren loader siden. Du er nødt til at gemme informationen et sted - fx i en database lokalt hos dig eller i en cookie hos brugeren.
Avatar billede fastpoint Nybegynder
21. marts 2010 - 10:09 #3
men jeg vil meget gerne gemme i en database, men kan som sagt slet ikke se ændringen.
Dvs. på skærmen kan jeg godt se at billedet er flyttet, men ændringen bliver ikke lavet i source koden
Avatar billede keysersoze Guru
21. marts 2010 - 18:27 #4
Der må køre en eller anden javascript-funktion idet en div flyttes - denne funktion må være det letteste sted at få ikke kun oplysningerne fra men også udvidde til at gemme i basen.
Avatar billede fastpoint Nybegynder
21. marts 2010 - 18:38 #5
så langt er jeg kommet:)
men måske du kan hjælpe med noget andet i min problemstilling.

Hvordan placere jeg et element på en bestemt placering med JavaScript?

Dette fungere f.eks ikke
document.getElementById('x').offsetLeft = 100;

men det er måske ikke sådan man skal ændre placeringen?
Jeg har kordinaterne men vil blot ændre placeringen af elementet.
Det må gerne være med css hvis det er nemmere.
Avatar billede fastpoint Nybegynder
21. marts 2010 - 22:37 #6
jeg fandt .style.pixelLeft og .style.pixelTop som virker.
så håber jeg selvfølgelig at samme kordinator giver det rigtige resultat for offsetLeft f.eks
Avatar billede fastpoint Nybegynder
21. marts 2010 - 22:47 #7
hmm.. jeg kan se at mit element placere sig tæt på det ønskede, men stadig for upræcist.

benytter jeg den rigtige metode og skal jeg gøre noget yderligere for at få den ønskede placering mere præcist?
Avatar billede fastpoint Nybegynder
21. marts 2010 - 22:49 #8
pis også.. placeringen skal gøres ud fra elementets placering i min <body> eller html, men den gør det faktisk ud fra skærmen lige nu.. dvs. minimere jeg eller maksimere så elementet forkert:X
Avatar billede keysersoze Guru
22. marts 2010 - 07:35 #9
sæt position til absolute og benyt derefter top og left til at styre positionen. sæt position relative på det element det skal positioneres i forhold til (html og body er formentlig ikke så brugbare til det - men svært at sige uden at have set din side).
Avatar billede fastpoint Nybegynder
22. marts 2010 - 09:52 #10
jeg har lavet en div hvor mine elementer starter med at være placeret i.
Der kan godt være under divs, men det vigtigste er blot at elementerne forbliver i den første div, som jeg har lavet.
Umiddelbart har jeg løst det ved at sætter "overflow:auto" hvilket gør at jeg ikke kan trække elementet ud over første div.

Hvis jeg har forstået dig korrekt så mener du at hvis mit element har position:absolute så kan jeg benytte top og left til at styre elementet?

Dvs. svare let til offsetLeft ? den værdi jeg fik fra javascript?
og ligeledes med top?

eller er det slet ikke offsetLeft og offsetTop jeg skal benytte? hvis jeg gerne vil sikre mig at elementet er placeret samme sted selv hvis jeg maksimere/minimere mit vindue?
Avatar billede keysersoze Guru
22. marts 2010 - 10:10 #11
sæt position relative på den div (master) alle dine øvrige elementer (childs) er placeret i - så vil du kunne placere childs i forhold til master ved at sætte position absolute på dem.

Jeg ville umiddelbart starte ud med style.left/top - men jeg tror sagtens offsetLeft/offsetTop også sagtens kan gå, kan ikke huske forskellen.

Det mest naturlige - hvis muligt selvfølgelig - var at undgå javascript og i stedet sætte værdien inline på elementerne, så slap du også for at lege med javascript.
Avatar billede fastpoint Nybegynder
22. marts 2010 - 10:40 #12
så nu er vi faktisk ved at være der:D
jeg kan placere mit element præcis hvor det skal være, men før vi kan lukke har jeg stadig et par spørgsmål.

1. Min ydre div havde width:100% og height:100% før, men hvis jeg ikke angiver det i pixels så vil mit element ikke have den samme placering når man f.eks resizer. Men der er måske ingen vej uden om og jeg er tvunget til at angive det i pixels?

2. Jeg kan vel ikke undgå JavaScript helt for jeg skal jo "Gemme" siden. Men hvis jeg kan undgå JavaScript hvordan får jeg så den nye placering med over til server?

3. Jeg har gjort min div relativ som du sagde, men uden overflow:auto så kan jeg stadig hive et element ud over diven's grænser, men det kan måske ikke undgåes på en anden måde? tænkte bare det ser grimt ud med 2 scrollbars ude i højre side:)


4. Tusind tak for hjælpen indtil videre! Det var bare super dejlig at se det element placere sig 100% præcist også ved resize.

Når du svarer tilbage så læg det som et "Svar":)
Avatar billede fastpoint Nybegynder
22. marts 2010 - 10:56 #13
til spørgsmål 1. det er okay hvis jeg ikke skal angive det %, men jeg kan se selv når jeg angiver med pixels, så giver det ikke helt samme placering hvis jeg åbner dokumentet med firefox, men det burde det vel når min hoved div er relativ og har en fixed størrelse?
Avatar billede fastpoint Nybegynder
22. marts 2010 - 11:07 #14
glem min sidste kommentar:) jeg havde noget padding med på mit element og det gav forkert placering i de 2 browsere, men uden padding virker det:)
Avatar billede keysersoze Guru
22. marts 2010 - 11:36 #15
hvis din master har width til 100% vil den vel have samme position altid - hvis nogle elementer så flytter sig i forhold til masterens 0,0 punkt må de være placeret anderledes end de burde i forhold til den ønskede funktionalitet. Det er svært at svare på hvorfor du oplever forskelle mellem IE og FF - det første du i hvert fald skal sørge for, hvis ikke allerede gjort, er at have en korrekt doctype og valid kode.

jeg ved ikke hvordan du laver systemet og hvad du har tilgængelig af teknologi - javascript kan sagtens være den rigtige løsning i dit tilfælde.

hvis du ikke må hive en child ud over masterens grænser vil jeg mene du skal begrænse det gennem din javascript.
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

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