Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript] Jak Dobrać Się Do Zmiennych Globanych W Funkcji i jak działa addEventListener()?
23kulpamens
post 7.11.2007, 15:54:50
Post #1





Grupa: Zarejestrowani
Postów: 57
Pomógł: 1
Dołączył: 11.10.2007

Ostrzeżenie: (0%)
-----


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

Ten post edytował 23kulpamens 8.11.2007, 10:17:10


--------------------
Ta sygnaturka to lekkie przegięcie. To poważne forum. Pomijam już fakt naruszenia regulaminu. Usuwam /~nospor/ szkoda :(
Go to the top of the page
+Quote Post
nospor
post 7.11.2007, 16:23:40
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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;
    
}


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
23kulpamens
post 7.11.2007, 16:56:32
Post #3





Grupa: Zarejestrowani
Postów: 57
Pomógł: 1
Dołączył: 11.10.2007

Ostrzeżenie: (0%)
-----


no dobra, a co z zapisem do zmiennej globalnej?? no i czy kotś zna addEventListener() (Mozilla) lub attachEvent() (IE)

Ten post edytował 23kulpamens 7.11.2007, 20:13:05


--------------------
Ta sygnaturka to lekkie przegięcie. To poważne forum. Pomijam już fakt naruszenia regulaminu. Usuwam /~nospor/ szkoda :(
Go to the top of the page
+Quote Post
nospor
post 7.11.2007, 19:56:07
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No przeciez napisalem:
YY=.....
zadne window.YY


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
23kulpamens
post 8.11.2007, 10:10:35
Post #5





Grupa: Zarejestrowani
Postów: 57
Pomógł: 1
Dołączył: 11.10.2007

Ostrzeżenie: (0%)
-----


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

Ten post edytował 23kulpamens 8.11.2007, 10:13:23


--------------------
Ta sygnaturka to lekkie przegięcie. To poważne forum. Pomijam już fakt naruszenia regulaminu. Usuwam /~nospor/ szkoda :(
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.06.2025 - 20:29