21. marts 2010 - 00:32Der 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?
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.
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
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.
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.
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
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
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).
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?
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.
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.
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?
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.
Synes godt om
Ny brugerNybegynder
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.