Wiem, że było to już setki razy, przeglądałem forum, wiem też że można to zrobić prościej przy użyciu jakiegoś frameworka. Chciałbym jednak to zrozumieć i przy okazji poćwiczyć trochę javascript ponieważ jeszcze się go uczę.
Właściwie to skrypt działa, tyle tylko że nie widzi mi obiektu w funkcji mouseMove przez co muszę ustawiać go ręcznie. Jak zrobić, aby był on widoczny po wywołaniu pierwszej funkcji we wszystkich następnych?
  1. function mouseDown(event,objekt)
  2. {
  3. //czyta odległość od krawędzi
  4. startX = objekt.offsetLeft;
  5. startY = objekt.offsetTop;
  6. document.form.X.value=startX;
  7. document.form.Y.value=startY;
  8.  
  9. //gdzie kliknąłem ?
  10. initialMouseX = event.clientX;
  11. initialMouseY = event.clientY;
  12. document.form.q.value=initialMouseX;
  13. document.form.w.value=initialMouseY;
  14.  
  15. document.addEventListener("mousemove", mouseMove, true);
  16. }
  17. function mouseMove(event)
  18. {
  19. //oblicza przesunięcie od kliknięcia
  20. dX = event.clientX - initialMouseX;
  21. dY = event.clientY - initialMouseY;
  22. document.form.r.value=dX;
  23. document.form.t.value=dY;
  24. //ustawia obrazek
  25. document.obrazek.style.position="fixed";
  26. document.obrazek.style.left = startX + dX + 'px';
  27. document.obrazek.style.top =startY + dY + 'px';
  28.  
  29. document.addEventListener("mouseup", mouseUp, true);
  30. }
  31. function mouseUp()
  32. {
  33. removeEvent("mousemove", mouseMove, true);
  34. removeEvent("mouseup", mouseUp, true);
  35. }
  36.  
  37. </head>
  38. <form name="form"><br />
  39. Odległości od brzegów :<br />
  40. <input type="text" name="X" />
  41. <input type="text" name="Y" /><br />
  42. Gdzie kliknałem:<br />
  43. <input type="text" name="q" />
  44. <input type="text" name="w" /><br />
  45. Przesunięcie:<br />
  46. <input type="text" name="r" />
  47. <input type="text" name="t" />
  48.  
  49. </form>
  50. <img src="obrazek.jpg" name="obrazek" id="ob" onmousedown="mouseDown(event,this);" />