Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS] setInterval
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
MatheW
Chcę by funkcja wywoływana była np. co sekunde. Znalazlem funkcje w js - setInterval.

Znalazłem przykład wykożystania
  1. <title>setInterval/clearInterval example</title>
  2.  
  3. <script type="text/javascript">
  4. var intervalID;
  5.  
  6. function changeColor()
  7. {
  8. intervalID = setInterval(flashText, 1000);
  9. }
  10.  
  11. function flashText()
  12. {
  13. var elem = document.getElementById("my_box");
  14. if (elem.style.color == 'red')
  15. {
  16. elem.style.color = 'blue';
  17. }
  18. else
  19. {
  20. elem.style.color = 'red';
  21. }
  22. }
  23.  
  24. function stopTextColor()
  25. {
  26. clearInterval(intervalID);
  27. }
  28. </head>
  29.  
  30. <body onload="changeColor();">
  31. <div id="my_box">
  32. <p>Hello World</p>
  33. </div>
  34. <button onclick="stopTextColor();">Stop</button>
  35. </body>
  36. </html>
I działa on pod wszystkimi przeglądarkami prócz Opery. Jak mozna rozwiązac ten problem?
siemakuba
Twoim problemem nie jest funkcja setInterval. Ona działa poprawnie w Operze. Spojrzę później na kod - troche jeszcze mam do zrobienia dziś. Sprawdź poniższy kod pod Operą / FF / IE:
  1. <script type="text/javascript">
  2.  
  3. function increment()
  4. {
  5. var e = document.getElementById('inp');
  6. e.value = parseInt(e.value)+1;
  7. }
  8.  
  9. setInterval('increment()', 1000);
  10.  
  11. </head>
  12. <input type="text" id="inp" value="0">
  13. </body>
  14. </html>


pozdr.
MatheW
Heh działa, ale dlaczego tamten na górze nie działa to nie wiem :zonk: Czyli ta funkcja tak na prawde uruchamia sie caly czas? Tylko cos pochrzanione jest wewnatrz. W kazdym razie juz wiem ze dziala, bo to mial byc tylko przyklad.
mailomailo
Witam! Chciałbym odświeżyć ten temat. Mój kod z użyciem setInterval nie działa pod Firefoxem tylko pod IE.

CODE
images = new Array('images/001.jpg',
'images/002.jpg',
'images/003.jpg',
'images/004.jpg',
'images/005.jpg',
'images/006.jpg',
'images/007.jpg',
'images/008.jpg',
'images/009.jpg',
'images/010.jpg',
'images/011.jpg',
'images/012.jpg',
'images/013.jpg',
'images/014.jpg',
'images/015.jpg',
'images/016.jpg',
'images/017.jpg',
'images/018.jpg');
licznik = new Array('1','2','3','4');

function zmien(){
img = document.getElementById(licznik[0]);
$('#'+licznik[0]).fadeOut(3000, function(){img.src=images[0];}).fadeIn(3000);
licznik.push(licznik[0]);
licznik.shift();
images.push(images[0]);
images.shift();
};

function start(){
window.setInterval(zmien,5000);
}
start();


W założeniu ma to być slideshow galerii zdjęć. Potrzebuję wywoływać w nieskończoność funkcję zmien() z opóźnieniem 5 sekund. Kod html:

  1. <img id="1"src="images/018.jpg" alt="" />
  2. <img id="2"src="images/017.jpg" alt="" />
  3. <img id="3"src="images/016.jpg" alt="" />
  4. <img id="4"src="images/015.jpg" alt="" />


Jednak wszystko działa, błąd dotyczył czegoś innego. Jednak nie usuwam tego postu, jest on przykładem na wykorzystanie setInterval i jquery do stworzenia prostej galerii zdjęć automatycznie zmieniających się.

Opis działania:

Tworzę dwie tablice, jedną z adresami obrazków, drugą z licznikiem, czyli id elementu img.
W funkcji zmien inicjuję obrazek o id pierwszym z tabeli i używając jquery fadeOut wycieniowuję go. Następnie w funkcji callback fadeOut podmieniam src obrazka na pierwsze z tabeli. Następnie używając metod push i shift przenoszę pierwszy element tablicy na jej koniec. To samo powtarzam dla tablicy licznik.
Tak więc galeria składa się z 4 obrazków wyświetlających się na stronie, w tablicy images jest ich dowolna ilość. Całość zapętlam w nieskończoność przy użyciu Set Interval.
Czas efektu fadeIn fadeOut można dowolnie ustalić, tak samo jak czas przerwy w setInterval.

Pozdrawiam.
dfs
Dzięki wam!!!
Za odpowiedźwinksmiley.jpg

Też miałem taki sam problem i tu znalazłem odpowiedź, mimo że sami zadawaliście tylko pytania.

Chodzi o to że w FireFox'ie funkcja setInterwal('wywolanie_czegos()',1000);
lubi mieć owe wywalanie_czegos() w 'cudzysłowach'.

np. setInterwal('alert("pies")',1000); to będzie pod FF działać,
to zaś setInterwal(alert("pies"),1000); już nie

Co może dla PHPowca wydawać się dziwne, ale tak w JS jak widać jest.

pozdrawiam.

P.S. Widzę ze problem dotyczy Opery, ale ja miałem podobny w FF.
erix
Z tego, co pamiętam, to najprościej użyć funkcji anonimowej:
[JAVASCRIPT] pobierz, plaintext
  1. setInterval(function(){
  2. alert('asdasd');
  3. }, 100);
[JAVASCRIPT] pobierz, plaintext

I jeszcze mi nigdy nie "pirdło".
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.