Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Jak Dobrać Się Do Zmiennych Globanych W Funkcji i jak działa addEventListener()?
Forum PHP.pl > Forum > Przedszkole
23kulpamens
Mam taki kod HTML
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  3. <script type="text/javascript">
  4. var IE = document.all?true:false
  5. var tempX = 0
  6. var tempY = 0
  7. var XX = 100
  8. var YY = 100
  9.  
  10. function getMouseXY(e) {
  11. if (window.IE) { // grab the x-y pos.s if browser is IE
  12. tempX = event.clientX + document.body.scrollLeft
  13. tempY = event.clientY + document.body.scrollTop
  14. } else { // grab the x-y pos.s if browser is NS
  15. tempX = e.pageX
  16. tempY = e.pageY
  17. }
  18. // catch possible negative values in NS4
  19. if (tempX < 0){tempX = 0}
  20. if (tempY < 0){tempY = 0}
  21. window.XX = 10;
  22. document.getElementById('xxx').value = "X:" + tempX;
  23. document.getElementById('yyy').value = "Y:" + tempY;
  24. document.getElementById('czas').style.width = tempX + "px";
  25. document.getElementById('czas').style.height = tempY + "px";
  26. document.getElementById('czas').style.left = tempX + "px";
  27. document.getElementById('czas').style.top = tempY + "px";
  28. return true
  29. }
  30.  
  31. function count(){
  32.  
  33. if (!IE) document.captureEvents(Event.MOUSEMOVE)
  34. document.onmousemove = getMouseXY;
  35. window.YY = document.getElementById('xxx').value.toString();
  36. document.getElementById('ggg').value = window.XX;
  37. document.getElementById('hhh').value = window.YY;
  38. }
  39.  
  40.  
  41. </head>
  42. <div id="czas" style="background-color: aqua; width: 500px; position: absolute; t">
  43. <input id="xxx" name="strength" value="" />
  44. <input id="yyy" name="strength" value="" />
  45. </div>
  46. <input id="ggg" name="strength" value="" />
  47. <input id="hhh" name="strength" value="" />
  48. <script type="text/javascript">count();</script>
  49. </body>
  50. </html>

I wewnątrz funkcji getMouseXY() nie mogę się dobrać do żadnej zmiennej globalnej XX ani YY. Próbowałem też normalnie, nie jako element klasy "window". Nie działa sad.gif . Jak w takim wypadku mogę zapisać coś do zmiennej globalnej wewnątrz funkcji getMouseXY() żeby móc to później wykorzystywać sobie przy generowaniu dynamicznej zawartości. ( Np. tego rosnącego i malejącego bloku przy kursorze myszki ). Jak widać w kodzie kiedy spróbowałem odczytać wartość z pola <input/> którego zawartość zmienia się w funkcji getMouseXY() to wartośc została odczytana tylko raz na początku wykonania skryptów. Jeżeli źle rozumiem strukturę działania JavaScript lub tego ni da sie zrobić, ktoś mógłby mi wytłumaczyć dlaczego??

Podobno
  1. document.captureEvents(Event.MOUSEMOVE)
Jest przestarzałe dlatego należy używać addEventListener(), ale nigdzie nie mogę znaleźć o tym zrozumiałych informacji, a to co znalazłem na stronie mozilli jest kompletnie niejasne. http://developer.mozilla.org/pl/docs/DOM:e...ddEventListener
nospor
Cytat
Jak widać w kodzie kiedy spróbowałem odczytać wartość z pola <input/> którego zawartość zmienia się w funkcji getMouseXY() to wartośc została odczytana tylko raz na początku wykonania skryptów.
No bo raz tylko wykonales count(). jak count() moze ci sie wykonywac wiele razy skoro ty go tylko raz wykonales?
Kod
function getMouseXY(e) {
  if (window.IE) { // grab the x-y pos.s if browser is IE
    tempX = event.clientX + document.body.scrollLeft
    tempY = event.clientY + document.body.scrollTop
  } else {  // grab the x-y pos.s if browser is NS
    tempX = e.pageX
    tempY = e.pageY
  }  
  // catch possible negative values in NS4
  if (tempX < 0){tempX = 0}
  if (tempY < 0){tempY = 0}
  XX = 10;
  document.getElementById('xxx').value = "X:" + tempX;
  document.getElementById('yyy').value = "Y:" + tempY;
  document.getElementById('czas').style.width = tempX + "px";
  document.getElementById('czas').style.height = tempY + "px";
  document.getElementById('czas').style.left = tempX + "px";
  document.getElementById('czas').style.top = tempY + "px";
    YY = document.getElementById('xxx').value.toString();
    document.getElementById('ggg').value = XX;
    document.getElementById('hhh').value = YY;
  return true
}

function count(){
    
    if (!IE) document.captureEvents(Event.MOUSEMOVE)
    document.onmousemove = getMouseXY;
    
}
23kulpamens
no dobra, a co z zapisem do zmiennej globalnej?? no i czy kotś zna addEventListener() (Mozilla) lub attachEvent() (IE)
nospor
No przeciez napisalem:
YY=.....
zadne window.YY
23kulpamens
Już rozumiem, chodzi o kolejność następowania zdarzeń smile.gif A window.XX też działa, pomoc Mozilli nawet twierdzi, że takiej formy należy używać tongue.gif Dzięki za poprawiony kod smile.gif
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-2025 Invision Power Services, Inc.