Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Automatyczne generowane liczby, (animacja)
soliniak
post 15.04.2015, 09:52:55
Post #1





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 8.08.2009

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


Witam,

Mam taki kod, chciałbym żeby liczba w div'ie losowo się wybierała paręnaście razy, dość szybko, aby stworzyć iluzję losowania liczby (coś jak migające owocki w jednorękim bandycie).
Niestety JavaScript to dla mnie czarna magia smile.gif. Wymyśliłem że muszę wywołać funkcję losuj() automatyczne, a nie po kliknięciu.
Jakieś sugestie? smile.gif

  1. <button onclick="losuj()">Try it</button>
  2.  
  3. <p id="demo"></p>
  4.  
  5. <script>
  6. function losuj() {
  7.  
  8. for(i=1; i<5; i++){
  9.  
  10. var x = document.getElementById("demo")
  11.  
  12. }
  13. x.innerHTML = Math.floor((Math.random() * 10) + 1);
  14. }
  15. </script>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
Turson
post 15.04.2015, 10:39:26
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


setInterval()
Go to the top of the page
+Quote Post
soliniak
post 15.04.2015, 10:58:49
Post #3





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 8.08.2009

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


Ślicznie dziękuję wink.gif

EDIT:

A jeszcze mam pytanko. Jak zrobić żeby dla kilku akapitów "p" ta funkcja działa?

  1. <p id="demo"> 1 </p><p id="demo2"> 2 </p><p id="demo"> 3 </p>
  2.  
  3. <script>
  4. var x = document.getElementById("demo");
  5. var ps = "20";
  6. var z = setInterval(function losuj() {
  7. x.innerHTML = Math.floor((Math.random() * 99) + 1);
  8. }, 20);
  9.  
  10. setTimeout("stop()",2000);
  11.  
  12. function stop(){
  13. clearInterval(z);
  14. }
  15. </script>
  16.  


Tutaj działa tylko dla pierwszego, a chciałbym żeby jakoś prosto odnieść się do wszystkich elementów <p class="demo"></p> i żeby w każdym z osobna "losowała się" liczba.
Druga rzecz to tam gdzie jest drugi argument setInterval - 20 - jak można dodać tutaj zmienną? Chciałbym zrobić pętlę for i zmieniać jej wartość o 1 aż dojdzie do zera, przez co byłby efekt zwalniania tej cyfry(?)...
Halp!

Ten post edytował soliniak 15.04.2015, 13:13:55
Go to the top of the page
+Quote Post
kafowi
post 15.04.2015, 13:24:50
Post #4





Grupa: Zarejestrowani
Postów: 75
Pomógł: 20
Dołączył: 13.02.2015

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


Kod
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
  <p class="demo"></p>
  <p class="demo"></p>
  <p class="demo"></p>
</body>
</html>

Kod
var demo = document.getElementsByClassName("demo").length;
for(i=0;i<demo;i++)
  {
    document.getElementsByClassName("demo")[i].innerHTML = Math.floor((Math.random() * 99) + 1);
  }


Ten post edytował kafowi 15.04.2015, 13:52:17
Go to the top of the page
+Quote Post
soliniak
post 15.04.2015, 14:36:19
Post #5





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 8.08.2009

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


Co jest z tym nie tak, że nie działa?

  1.  
  2. <p class="demo"> </p>
  3. <p class="demo"> </p>
  4. <p class="demo"> </p>
  5.  
  6. <script>
  7. for(i=0;i<3;i++)
  8. {
  9. var z = setInterval(function () {
  10. document.getElementsByClassName("demo")[i].innerHTML = Math.floor((Math.random() * 99) + 1);
  11. }, 20);
  12. }
  13. setTimeout("stop()",2000);
  14. </script>


EDIT:
Doszedłem do czegoś takiego:

  1. <p class="demo"></p>
  2. <p class="demo"></p>
  3. <p class="demo"></p>
  4.  
  5. <script>
  6. var demo = document.getElementsByClassName("demo").length;
  7.  
  8. for(i=0;i<demo;i++)
  9. {
  10. var u = document.getElementsByClassName("demo")[i];
  11.  
  12. function losuj2() {
  13. u.innerHTML = Math.floor((Math.random() * 99) + 1);
  14. }
  15. }
  16. var z = setInterval(function (){ losuj2();}, 20);
  17.  
  18. setTimeout("stop()",2000);
  19. function stop(){
  20. clearInterval(z);
  21. }
  22.  
  23. </script>


Ale działa tylko na ostatnim akapicie, pierwsze dwa nie mają żadnej wartości :/

Ten post edytował soliniak 15.04.2015, 15:33:12
Go to the top of the page
+Quote Post
Turson
post 16.04.2015, 07:06:08
Post #6





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


http://jsfiddle.net/7a0qez05/
Go to the top of the page
+Quote Post
soliniak
post 16.04.2015, 11:10:49
Post #7





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 8.08.2009

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


Po sporej dłubaninie wydłubałem...

  1. <p class="demo"></p>
  2. <p class="demo"></p>
  3. <p class="demo"></p>
  4. <script>
  5.  
  6. var interwal = setInterval(function() {
  7. for (var i = 0; i < document.getElementsByClassName("demo").length; i++) {
  8. document.getElementsByClassName("demo")[i].innerHTML = Math.floor((Math.random() * 99) + 1);
  9. }
  10. }, 20);
  11.  
  12. setTimeout(function stop(){clearInterval(interwal);}, 2000);
  13. </script>
  14.  
  15.  

Jak mogę teraz wyciągnąć, cyfry które zostały wylosowane, do zmiennych? Najlepiej od razu do PHP.
Go to the top of the page
+Quote Post
Grzegorz02
post 23.04.2015, 20:53:52
Post #8





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 20.09.2014

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


Myślę że lepiej byłoby losować liczby po stronie serwera, następnie ajaxem pobierać wyniki w zależności od potrzeby. Szkoda obciążać przeglądarkę.
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 05:08