Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Warunek gdy zmienna = 100 i jesli przycisk jest wcisniety.
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
wizard144
Witam. Ostatnio siedzę nad czymś takim:



  1.  
  2.  
  3. if(zamiana=='50' && [tu drugi warunek)
  4. {
  5.  
  6. reszta kodu ...
  7.  
  8. }
  9.  
  10.  


Potrzebuję w JS napisać coś w stylu if(!isset(document.onkeyup)) czyli Jeśli żaden klawisz nie został puszczony lub jeśli wciąż jest wciśnięty. Jest mi to obojętne bo to jedno i to samo. Da sie to jakoś zrobić ? Napisze w pseudokodzie:

  1.  
  2. jesli zamiana == 50 i przycisk jest puszczony to
  3. {
  4.  
  5. wykonaj ten blok instrukcji.
  6.  
  7. }
  8.  
  9.  
  10.  


Proszę o pomoc. Pozdrawiam.
batman
Stwórz zmienną, np isKeyDown i ustaw ja na false. Następnie do zdarzenia keyDown (keyPress lub innego odpowiedzialnego za wciśniecie klawisza, teraz nie pamiętam jaki to jest event) przypisz funkcję, w której ustawisz zmienną isKeyDown na true. Potem w warunku sprawdzasz tylko zmienną isKeyDown.
wizard144
Chyba niezrozumiale to przedstawilem. Wygląda to w ten sposob:


  1. document.onkeydown = checkKeycode;
  2.  
  3. id=false;
  4.  
  5. function checkKeycode(e){
  6.  
  7. var keycode;
  8.  
  9.  
  10. if (window.event) keycode = event.keyCode;
  11. else if (e) keycode = e.which;
  12.  
  13.  
  14.  
  15. if(id == false)
  16. {
  17. switch(keycode)
  18. {
  19. case 37:wartosc = document.getElementById('divek').style.left;
  20. wartosc=parseInt(wartosc);
  21.  
  22. document.getElementById('divek').getElementsByTagName('img')[0].src='element_1.gif';
  23.  
  24. zmiana=0;
  25. if(id == false) {
  26. id = setInterval(
  27. function()
  28. {
  29.  
  30. document.getElementById('divek').style.left=wartosc-5;
  31. wartosc=wartosc-5;
  32. zmiana=zmiana+5;
  33.  
  34.  
  35. if(zmiana == 50)
  36. {
  37. clearInterval(id);
  38. id = false;
  39. document.getElementById('divek').getElementsByTagName('img')[0].src='element_0.gif';
  40. zmiana=0;
  41. }
  42.  
  43. }, 100)};break;
  44.  
  45. case 38:wartosc = document.getElementById('divek').style.top;
  46. wartosc=parseInt(wartosc);
  47.  
  48. document.getElementById('divek').getElementsByTagName('img')[0].src='element_2.gif';
  49. zmiana=0;
  50. if(id == false) {
  51. id = setInterval(
  52. function()
  53. {
  54.  
  55. document.getElementById('divek').style.top=wartosc-5;
  56. wartosc=wartosc-5;
  57. zmiana=zmiana+5;
  58.  
  59.  
  60. if(zmiana == 50)
  61. {
  62. clearInterval(id);
  63. id = false;
  64. document.getElementById('divek').getElementsByTagName('img')[0].src='element_0.gif';
  65. document.getElementById('divek').style.top=wartosc-2;
  66. wartosc=0;
  67. }
  68.  
  69. }, 100)};break;
  70. case 39:wartosc = document.getElementById('divek').style.left;
  71. wartosc=parseInt(wartosc);
  72.  
  73. document.getElementById('divek').getElementsByTagName('img')[0].src='element_3.gif';
  74. zmiana=0;
  75. if(id == false) {
  76. id = setInterval(
  77. function()
  78. {
  79.  
  80. document.getElementById('divek').style.left=wartosc+5;
  81. wartosc=wartosc+5;
  82. zmiana=zmiana+5;
  83.  
  84.  
  85. if(zmiana == 50)
  86. {
  87. clearInterval(id);
  88. document.getElementById('divek').getElementsByTagName('img')[0].src='element_0.gif';
  89. id = false;
  90. wartosc=0;
  91. }
  92.  
  93. }, 100)};break;
  94. case 40:wartosc = document.getElementById('divek').style.top;
  95. wartosc=parseInt(wartosc);
  96.  
  97. document.getElementById('divek').getElementsByTagName('img')[0].src='element_4.gif';
  98. zmiana=0;
  99.  
  100.  
  101.  
  102. if(id == false) {
  103. id = setInterval(
  104. function()
  105. {
  106.  
  107. document.getElementById('divek').style.top=wartosc+5;
  108. wartosc=wartosc+5;
  109. zmiana=zmiana+5;
  110.  
  111.  
  112. if(zmiana == 50)
  113. {
  114. document.getElementById('divek').style.top=wartosc+2;
  115. clearInterval(id);
  116. document.getElementById('divek').getElementsByTagName('img')[0].src='element_0.gif';
  117. id = false;
  118. wartosc=0;
  119. }
  120. }
  121. , 100);break;
  122. }
  123. }
  124.  
  125. }
  126.  
  127.  
  128. }


Mam sobie taki o to skrypcik wlasnorecznie napisany. Powoduje ze:


1. Jest div z zawartoscia pierwotną
2. Div zmienia zawartosc gdy ktos wcisnie ktoras ze strzalek.
3. Interval sie w sobie nie zagniezdza.(warunek if (id=false) )
4. Po przejechaniu 50 px zawartosc znowu sie zmienia na pierwotną.

Chciałbym zeby jesli przycisk jest wcisniety to zawartosc sie nie zmieniala. To znaczy

Przejedzie 50 - > przycisk wciśnięty -> przejedzie 50 -> Przejedzie 50 - > przycisk wciśnięty -> przycisk puszczony -> zawartosc sie zmienia na pierwotną

Mysle ze lepiej wytlumaczylem smile.gif
batman
Nie musisz ustawiać żadnych interwałów, by to działało. Najprostszy z możliwych przykładów:
  1. <script type="text/javascript">
  2. document.onkeydown = checkKeycode;
  3. function checkKeycode(e) {
  4. var keycode;
  5. if (window.event) keycode = event.keyCode;
  6. else if (e) keycode = e.which;
  7.  
  8. var el = document.getElementById("moveit");
  9. var l = parseInt(el.style.left);
  10. var t = parseInt(el.style.top);
  11. if(keycode == 37) {
  12. el.style.left = (l - 50);
  13. }
  14. else if(keycode == 38) {
  15. el.style.top = (t - 50);
  16. }
  17. else if(keycode == 39) {
  18. el.style.left = (l + 50);
  19. }
  20. else if(keycode == 40) {
  21. el.style.top = (t + 50);
  22. }
  23.  
  24.  
  25. }
  26.  
  27. <div id="moveit" style="position: absolute; top: 200px; left: 200px; width: 50px; height: 50px; border: 1px solid red;"></div>


Zapomniałem dodać, że na zdarzenie onKeyUp musisz ustawić left i top na domyślne wartości.
wizard144
Interwaly sa potrzebne zeby przejscie bylo plynne smile.gif
batman
W takim razie polecam skorzystać z gotowego rozwiązania, np jQuery. Jest tam funkcja animate, która rozwiązuje problem "skakania".
wizard144
Nie lubie korzystać z takich gotowych rozwiązań smile.gif





EDIT:

Póki co męczę się nad zrobieniem takiego przypisania:



var zmienna = funkcja;

Zamiast wartości funkcji zwraca mi cale cialo...
batman
Cytat
Nie lubie korzystać z takich gotowych rozwiązań
Dlaczego? Nie ma sensu wymyślać koła na nowo.

A odnośnie drugiego problemu:

var zmienna = funkcja();
wizard144
Wiem wiem wiem smile.gif To ogarniam. Problem byl ze funkcja byla zle napisana.

A co do kola od nowa... nie o to chodzi. Chodzi o to żebym wiedział co i jak jest zrobione. Poza tym nie ogarniam troche jQuery. Tylko z advAjaxa korzystam
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.