Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [js] onmouseover
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
maciu
czy da się zrobić, aby akcja zdefiniowana w onmouseover, została wywołana tylko wtedy jeśli kursor będzie na polu przez odpowiednią ilość sekund?

  1. <td onmuseover="funkcja()"></td>


funkcja funkcja() będzie wywoływana dopiero gdy kursor będzie na komórce tabeli. Da się coś takiego zrobić?
mike
Podczas wjechania na obszar za pomocą setInterval() ustaw chęć wykonania jakiejść funkcji za ileś czasu.
Podczas zjechania skorzystaj z clearInterval(), to jeśli funkcja się jeszcze nie wykonała to sie już nie wykona.

Całość jest bardzo prosta. Pokombinuj.
Pytaj jak coś to podpowiem.

---update---
A coooo tam. Masz gotowca tongue.gif
  1. <style type="text/css">
  2. .box {
  3. width: 100px;
  4. height: 100px;
  5. border: #f00 solid 1px;
  6. }
  7.  
  8. <script type="text/javascript">
  9. var intervalId = null;
  10.  
  11. function someFunction() {
  12. alert('Lorem ipsum ...');
  13. }
  14.  
  15. function start() {
  16. intervalId = setInterval('someFunction()', 3000);
  17. }
  18.  
  19. function stop() {
  20. clearInterval(intervalId);
  21. }
  22.  
  23. <div class="box" onmouseover="start();" onmouseout="stop();"></div>
devnul
@mike_mech: setInterval będzie wykonywało funkcję (powtarzało co określony czas) aż do wyczyszczenia przez clearInterval dlatego IMHO lepiej jest w tym wypadku użyć setTimeout i clearTimeout

//DOWN: @mike_mech: wszyscy jesteśmy tylko ludzmi tongue.gif
mike
W sumie masz rację.
Nie zwróciłem uwagi, że ma się wykonać tylko raz. Nie wiem czemu pomyślałem o wielokrotnym wykonaniu gdzie pierwsze następuje po odpowiednim czasie.
maciu
dziękuje bardzo za pomoc. Mam jeszcze jedno laickie pytanie. Jak zrobić aby wywołać funkcję someFunction z parametrem. Poniższy kod zobrazuje o co mi chodzi

  1. function someFunction(id) {
  2. zmienna = id
  3. alert('Lorem ipsum ...');
  4. }
  5.  
  6. function start(id) {
  7. intervalId = setInterval('someFunction(id)', 3000);
  8. }
  9.  
  10. <div class="box" onmouseover="start(5);" onmouseout="stop();"></div>
devnul
  1. function someFunction(id) {
  2. zmienna = id
  3. alert('Lorem ipsum ...');
  4. }
  5. function stop() {
  6. clearTimeout(intervalId);
  7. }
  8. function start(id) {
  9. intervalId = setTimeout('someFunction('+id+')', 3000);
  10. }
  11.  
  12. <div class="box" onmouseover="start(5);" onmouseout="stop();"></div>


zadziałą jeśli id będize liczbą jesli tekstem to musisz dodać jeszcze cudzysłów
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.