Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript]Problem z setInterval
Woytek950
post
Post #1





Grupa: Zarejestrowani
Postów: 130
Pomógł: 2
Dołączył: 6.06.2008
Skąd: jesteś ?

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


Witam. Stworzyłem sobie takie cuś a w nim "funkcja" która jest odpowiedzialna za zmiane przezroczystości. I problem jest w warunku, bo tak jakby go omija. Wiem że setTimeout było by lepsze ale nie potrafję go użyć.
Chcę osiągnąć efekt preoladera.
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  4. <title>Untitled Document</title>
  5. <script type="text/javascript">
  6.  
  7. var s = 0.01;
  8. var d = 1;
  9. function zs(){
  10. document.cos.style.opacity = s;
  11. document.cos.style.filter = 'alpha(opacity='+d+')';
  12. d++;
  13. s+= 0.01;
  14. document.s.ds.value=d;
  15. }
  16. if (d < 100) {
  17. setInterval("zs(s);", 100);
  18. }
  19. else {}
  20.  
  21. </script>
  22. </head>
  23. <body>
  24.  
  25. <form name="s">
  26. <input type="text" name="ds">
  27. </form>
  28. <br />
  29. <img src="a.jpg" alt="mak polny" name="cos" />
  30.  
  31. </body>
  32. </html>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mortus
post
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Żeby zatrzymać setInterval to dodajesz sobie trzecią zmienną, np.:
var intervalId = 0;
W momencie wywołania funkcji setInterval podpinasz ją do zmiennej intervalId:
intervalId = setInterval("zs()", 100);
i jeśli d nie jest mniejsze od 100 (czyli w bloku else) czyścisz interwał:
clearInterval(intervalId);
Go to the top of the page
+Quote Post
Woytek950
post
Post #3





Grupa: Zarejestrowani
Postów: 130
Pomógł: 2
Dołączył: 6.06.2008
Skąd: jesteś ?

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


Cytat(mortus @ 27.04.2010, 13:19:05 ) *
Żeby zatrzymać setInterval to dodajesz sobie trzecią zmienną, np.:
var intervalId = 0;
W momencie wywołania funkcji setInterval podpinasz ją do zmiennej intervalId:
intervalId = setInterval("zs()", 100);
i jeśli d nie jest mniejsze od 100 (czyli w bloku else) czyścisz interwał:
clearInterval(intervalId);

Racja. Zrobiłem tak:
  1. <script type="text/javascript">
  2.  
  3. var s = 0.01;
  4. var intervalId = 0;
  5. var d = 1;
  6.  
  7. function zs()
  8. {
  9. if (d < 100)
  10. {
  11. document.cos.style.opacity = s;
  12. document.cos.style.filter = 'alpha(opacity='+d+')';
  13. d++;
  14. s+= 0.01;
  15. document.s.ds.value=d;
  16.  
  17. intervalId = setInterval("zs()", 1000);
  18. }
  19. else
  20. {
  21. clearInterval(intervalId);
  22. }
  23. }
  24.  
  25.  
  26.  
  27. </script>

Tylko że teraz to liczby przeskakują i coraz szybciej jest.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.12.2025 - 00:37