Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]setInterval - raz działa, a raz nie
Forum PHP.pl > Forum > Przedszkole
sweter
Witam,
od pewnego czasu męczę się z funkcją setInterval(). Poniższy kod działa mi prawidłowo pod Chromem, Firefoxem, a pod Operą już nie (IE nie mam do sprawdzenia) sad.gif
Kod JS w HEAD'zie strony:
  1. function przewin(){
  2. alert('ddsfsd');
  3. }

a teraz fragment w BODY:
  1. <div id="left" onmouseover="setInterval('przewin()', 1000);"></div>


Proszę, pomóżcie bo już z tym obłędu dostaję.
erix
[JAVASCRIPT] pobierz, plaintext
  1. <div id="left" onmouseover="setInterval(przewin, 1000);"></div>
[JAVASCRIPT] pobierz, plaintext

?
nospor
Cytat
Poniższy kod działa mi prawidłowo
Co rozumiesz pod pojęciem "prawidłowo"?
Dla mnie osobiscie ten kod jest bez sensu. Za kazdym razem, gdy ktoś najedzie myszką na diva, to bedzie odpalany proces, ktory co 1 sekundę bedzie wykonywal twoją funkcje. Gdy ktoś najedzie na diva to się odpali 10 procesów i kazdy z nich co jedną sekundę bedzie odpalał tę funkcję. Naprawdę taki był zamiar?
yevaud
sproboj
  1. <div id="left" onmouseover="setInterval(przewin, 1000);"></div>

poza tym bedziesz mial problem bo za kazdym razem jak bedzie mouseover to bedziesz mial nowy watek z przewin odpalony
nospor
@yevaud zduplikowales oba posty powyzej winksmiley.jpg

poza tym
setInterval(przewin, 1000)
jest tak samo poprawne jak
setInterval('przewin()', 1000)
cros
Cytat(yevaud @ 19.06.2010, 16:07:42 ) *
sproboj
  1. <div id="left" onmouseover="setInterval(przewin, 1000);"></div>

poza tym bedziesz mial problem bo za kazdym razem jak bedzie mouseover to bedziesz mial nowy watek z przewin odpalony

dokladnie.
Musisz przerwac proces zdarzeniem:
Cytat
onmouseout='clearInterval(IntervalID);'
onmouseover='IntervalID = setInterval("przewin()", 1000);'
yevaud
@nospor
jak zaczalem pisac to ich jeszcze nie bylo smile.gif googlowalem czy opera ma jakies specjalne problemy z interval smile.gif

generalnie mouseover mouseout srednio beda tutaj dzialaly(zwlaszcza jak Twoj div jeszcze zawiera jakies inne elementy), podlacz jquery i uzyj mouseenter mouseleave
sweter
Odświeżę trochę temat, bo znów mam problem z tą funkcją.
Tak więc nie działa mi taki kod (tzn. nie jest wyświetlana funkcja blad() - a powinna być co 2 sekundy):
  1. <head>
  2. <title>Tytuł</title>
  3. <script type="text/javascript" src="jquery.js" ></script>
  4. $(document).ready(function(){
  5. function blad(tresc){
  6. alert(tresc);
  7. }
  8. function powtarzanie(){
  9. setInterval("blad('s')", 2000);
  10. }
  11. powtarzanie();
  12. });
  13. </script>
  14. </head>
  15. <body>
  16. </body>
  17. </html>

Gdy zaś linijkę 11. zamienię na "setInterval("alert('s')", 2000);" wszystko jest OK.

Tak więc czemu nie mogę wywołać w setInterval() własnych funkcji, które pobierają jakieś parametry?
Sucz
Możesz:
Podmień funkcje powtarzanie w kodzie:
Kod
function powtarzanie(){

setInterval(function(){blad('s');}, 2000);

}


, powinno by OK.
mls
[JAVASCRIPT] pobierz, plaintext
  1. function blad (tresc) {
  2. alert(tresc);
  3. }
  4.  
  5. function powtarzanie () {
  6. setInterval(function () { blad('s'); }, 2000);
  7. }
  8.  
  9. $(document).ready(function () {
  10. powtarzanie();
  11. });
[JAVASCRIPT] pobierz, plaintext
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.