Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript]setInterval - raz działa, a raz nie
sweter
post
Post #1





Grupa: Zarejestrowani
Postów: 623
Pomógł: 11
Dołączył: 1.01.2009
Skąd: Wrocław

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


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ę.


--------------------
Go to the top of the page
+Quote Post
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




[JAVASCRIPT] pobierz, plaintext
  1. <div id="left" onmouseover="setInterval(przewin, 1000);"></div>
[JAVASCRIPT] pobierz, plaintext

?


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
nospor
post
Post #3





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




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?


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

"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
yevaud
post
Post #4





Grupa: Zarejestrowani
Postów: 471
Pomógł: 89
Dołączył: 29.07.2008
Skąd: Warszawa

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


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
Go to the top of the page
+Quote Post
nospor
post
Post #5





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




@yevaud zduplikowales oba posty powyzej winksmiley.jpg

poza tym
setInterval(przewin, 1000)
jest tak samo poprawne jak
setInterval('przewin()', 1000)


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

"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
cros
post
Post #6





Grupa: Zarejestrowani
Postów: 164
Pomógł: 21
Dołączył: 21.08.2009

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


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);'


Ten post edytował cros 19.06.2010, 15:17:06
Go to the top of the page
+Quote Post
yevaud
post
Post #7





Grupa: Zarejestrowani
Postów: 471
Pomógł: 89
Dołączył: 29.07.2008
Skąd: Warszawa

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


@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

Ten post edytował yevaud 19.06.2010, 15:19:21
Go to the top of the page
+Quote Post
sweter
post
Post #8





Grupa: Zarejestrowani
Postów: 623
Pomógł: 11
Dołączył: 1.01.2009
Skąd: Wrocław

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


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?

Ten post edytował sweter 27.07.2010, 20:18:10


--------------------
Go to the top of the page
+Quote Post
Sucz
post
Post #9





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 17.08.2009

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


Możesz:
Podmień funkcje powtarzanie w kodzie:
Kod
function powtarzanie(){

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

}


, powinno by OK.
Go to the top of the page
+Quote Post
mls
post
Post #10





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

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


[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


--------------------
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 Aktualny czas: 21.08.2025 - 18:43