Anders Mikkelsen forklarede:
> "Birger Sørensen" <sdc@bbsorensen.com> skrev i meddelelsen
> news:4b8ebfc6$0$278$14726298@news.sunsite.dk...
>> Anders Mikkelsen sendte dette med sin computer:
>>> Hej,
>>>
>>> Nu har jeg lavet en javascript funktion som kan flytte et element. Der er
>>> to problemer med den. Det første er, at når man har flyttet elementet og
>>> sluppet det igen kan man ikke flytte det igen. Det andet er, at når man
>>> flytter elementet kommer musen op i hjørnet af elementet.
>>>
>>> Noter: oID er en genvej til document.getElementByID();mouse henter
>>> mus-koordinaterne.
>>>
>>> Kildekoden:
>>>
>>> function draggable(id)
>>> {
>>> /*
>>> * @id = element id
>>> */
>>>
>>> oID(id).onmousedown = function()
>>> {
>>> var startX = mouse("x");
>>> var startY = mouse("y");
>>> var offsetX = oID(id).style.left;
>>> var offsetY = oID(id).style.top;
>>>
>>> document.onmousemove = function()
>>> {
>>> oID(id).style.position = "fixed";
>>> oID(id).style.left = (offsetX + mouse("x")) + 'px';
>>> oID(id).style.top = (offsetX + mouse("y")) + 'px';
>>>
>>>
>>> };
>>>
>>> document.onmouseup = function()
>>> {
>>> document.onmousemove = "";
>>> };
>>> };
>>> };
>>>
>>> Mvh Anders
>>
>> Kan ikke lige gennemskue, hvos dit problem er.
>> En ting er dog at
>> var offsetX = oID(id).style.left;
>> bør være
>> var offsetX = oID(id).offsetLeft;
>> og tilsvarende for Y/top.
>>
>> Jeg vil også tro, at "musen" i hjørnet er det modsatte : elementet flyttes,
>> så musen er i hjørnet; det er ikke cursoren der flyttes..?
>>
>> Umiddelbart, har du alting i een funktion, og gør tingene i document
>> objektet - undtaget på objektet der skal flyttes ( oID( id)), hvor du
>> overskriver mousedown.
>> I document.onmouseup(), mangler du at sætte funktionaliteten tilbage:
>> oID(id).onmousedown = draggable; // bemærk uden ()!
>>
>> Birger
>>
>>
>>
>>
>>
>> --
http://varmeretter.dk - billig, sund og hurtig mad
>>
http://bbsorensen.dk
>
> Mange tak for dit svar. Tror ikke offsetleft og top er en god ide i denne
> kontekst. HEr er en test-side med funktionen:
>
http://v3.agmweb.dk/admin/test.html , så du kan se problemet.
>
> Mvh Anders
Hvorfor ikke?
offsetLeft er afstanden i pixels.
style.left, er det der står i stylesheetet (hvis der står noget!).
Hvis jeg skriver { left :40em;}, regner dit med 40 pixels, mens mit
regner med den faktiske pixel afstand.
Birger
--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk