Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JS] setInterval, Nie działa pod Operą
MatheW
post 9.10.2006, 21:53:44
Post #1





Grupa: Zarejestrowani
Postów: 135
Pomógł: 0
Dołączył: 29.05.2006
Skąd: Lublin

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


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?


--------------------
[gg:8166107][jid:mmatheww@jabberpl.org][mail:mat.wojcik[at]gmail.com][www: http://mwojcik.pl]
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mailomailo
post 26.01.2010, 12:04:43
Post #2





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

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


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.

Ten post edytował mailomailo 26.01.2010, 12:25:42


--------------------
Mała strona o Nokii
Go to the top of the page
+Quote Post

Posty w temacie


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 Wersja Lo-Fi Aktualny czas: 22.06.2025 - 15:19