Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Automatyczne generowane liczby
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
soliniak
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>
Turson
setInterval()
soliniak
Ś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!
kafowi
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);
  }
soliniak
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 :/
Turson
http://jsfiddle.net/7a0qez05/
soliniak
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.
Grzegorz02
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ę.
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.