Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS] zaznaczanie pozycji kursora nad warstwą
Forum PHP.pl > Forum > Gotowe rozwiązania
phpion
Witam,
napisałem odpowiednie funkcyjki JS - może komuś się przyda. Zamiast div'a można dać np. mapkę i wskazać gdzie znajduje się dany obiekt na mapie (współrzędne zrzucone do inputów).
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3.  
  4. <title>Wspolrzedne na warstwie</title>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. <style type="text/css">
  7. #area {
  8. background-color: #CCC;
  9. height: 200px;
  10. width: 300px;
  11. }
  12. #point {
  13. background-color: #000;
  14. height: 3px;
  15. position: relative;
  16. width: 3px;
  17. }
  18. </style>
  19. <script type="text/javascript">
  20. function getXY(e) {
  21. var posx = 0;
  22. var posy = 0;
  23. if (!e) var e = window.event;
  24. if (e.pageX || e.pageY) {
  25. posx = e.pageX;
  26. posy = e.pageY;
  27. }
  28. else if (e.clientX || e.clientY) {
  29. posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
  30. posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
  31. }
  32.  
  33. posx = posx - parseInt(document.getElementById('area').offsetLeft);
  34. posy = posy - parseInt(document.getElementById('area').offsetTop);
  35.  
  36. document.getElementById('x').value = posx;
  37. document.getElementById('y').value = posy;
  38.  
  39. movePoint(posx, posy);
  40. }
  41.  
  42. function movePoint(posx, posy) {
  43. document.getElementById('point').style.left = posx + 'px';
  44. document.getElementById('point').style.top = posy + 'px';
  45. }
  46. </head>
  47.  
  48. <div id="area" onclick="getXY(event);">
  49. <div id="point"></div>
  50. </div>
  51.  
  52. <input id="x" />
  53. <input id="y" />
  54.  
  55. </body>
  56. </html>
.radex
Taki mały szczegół, ale po co masz sobie utrudniać życie:

posx = posx -

zamiast tego po prostu:

posx -=

to szczegół, ale przy dużych pracach dobre nawyki mogą (nieznacznie, ale jednak) przyśpieszyć prace, chyba że dla ciebie -= i tym podobne nie są czytelne.
DeemR
Mógłby ktoś podać funkcję aby punkt zmieniał swoje położenie po wpisywaniu współrzędnych w polach?
Byłbym bardzo wdzięczny. Niestety nie umiem jeszcze js wstydnis.gif
kamil4u
Kod
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<title>Wspolrzedne na warstwie</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
#area {
background-color: #CCC;
height: 200px;
width: 300px;
}
#point {
background-color: #000;
height: 3px;
position: relative;
width: 3px;
}
</style>
<script type="text/javascript">
function getXY(e) {
var posx = 0;
var posy = 0;
if (!e) var e = window.event;
if (e.pageX || e.pageY) {
posx = e.pageX;
posy = e.pageY;
}
else if (e.clientX || e.clientY) {
posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
}

posx = posx - parseInt(document.getElementById('area').offsetLeft);
posy = posy - parseInt(document.getElementById('area').offsetTop);

document.getElementById('x').value = posx;
document.getElementById('y').value = posy;

movePoint(posx, posy);
}

function movePoint(posx, posy) {
document.getElementById('point').style.left = posx + 'px';
document.getElementById('point').style.top = posy + 'px';
}

</script>
</head>
<body>

<div id="area" onclick="getXY(event);">
<div id="point"></div>
</div>

<input id="x" onKeyUp="document.getElementById('point').style.left = this.value + 'px';"/>
<input id="y" onKeyUp="document.getElementById('point').style.top = this.value + 'px';"/>

</body>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.