Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak przerobić prosty js losujący
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
S-i-R-o
Witam, kto pomoze przerobic prosty skrpy losujacy dwa wyrazy

  1. <script type="text/javascript">
  2. <!-- <![CDATA[
  3.  
  4. ile = 2; // ile elementów losujemy
  5.  
  6. elementy = new Array(
  7. 'jeden',
  8. 'dwa',
  9. 'trzy',
  10. 'cztery',
  11. 'piec',
  12. 'szesc'
  13. );
  14.  
  15. l=new Array();
  16. for (i=0;i<ile;i++) {
  17. los = Math.round(Math.random()*(elementy.length-1));
  18. jest = false;
  19. for (j=0;j<l.length;j++) if (l[j]==los) jest=true;
  20. if (jest) i--; else l[i] = los;
  21. }
  22.  
  23. for (i=0;i<ile;i++) document.write(elementy[l[i]]+" ");
  24.  
  25. // ]]> -->



Skrypt działa, ale chciałbym by losował tylko pola zaznaczone formularzem checkbox
formularz
losuj między zaznaczonymi polami
[v]jeden
[]dwa
[]trzy
[v]cztery
[v]piec
[V]szesc

i zeby losował dwie liczby z 4 zaznaczonych.

z góry dziekuje za pomoc
mirmil
  1. <script language="javascript">
  2. function losowanie() {
  3. //wyczysc div kazdorazowo przed losowaniem
  4. document.getElementById("wylosowane").innerHTML ="Wylosowane: ";
  5. //elementy z ktorych bedziesz losowal
  6. var elementy = [];
  7. elementy = generator();
  8. if(elementy.length >= 4){
  9.  
  10. var min = 2;
  11. var max = 4;
  12. var nums = new Array();
  13. var counter = 0;
  14.  
  15. while(counter< min)
  16. {
  17.  
  18. drawNum = Math.ceil(Math.random()* max);
  19.  
  20. if(!czyZawieraLiczbe(nums, drawNum))
  21. {
  22. nums[counter] = drawNum;
  23. counter++;
  24. document.getElementById("wylosowane").innerHTML += elementy[drawNum-1]+" ";
  25. }
  26.  
  27. }
  28.  
  29. }else{
  30.  
  31. document.getElementById("wylosowane").innerHTML = "<b>Zaznacz minimum cztery elementy!</b>";
  32.  
  33. }
  34.  
  35. return false;
  36. }
  37.  
  38. function generator(){
  39.  
  40. var tmp = [];
  41. var f = document.formularz;
  42.  
  43. for(var i = 0; i < f.liczba.length; i++){
  44.  
  45. if(f.liczba[i].checked) tmp.push(f.liczba[i].value);
  46.  
  47. }
  48. return tmp;
  49. }
  50.  
  51. function czyZawieraLiczbe(tablica, wartosc)
  52. {
  53. var len = tablica.length;
  54.  
  55. while (len--)
  56. {
  57. if (tablica[len] === wartosc)
  58. {
  59. return true;
  60. }
  61.  
  62. }
  63. return false;
  64. }
  65. </head>
  66. <div id="wylosowane"></div>
  67. <form name="formularz" onsubmit="return losowanie()">
  68. <input type="checkbox" name="liczba" value="Jeden">Jeden<br>
  69. <input type="checkbox" name="liczba" value="Dwa">Dwa<br>
  70. <input type="checkbox" name="liczba" value='Trzy'>Trzy<br>
  71. <input type="checkbox" name="liczba" value='Cztery'>Cztery<br>
  72. <input type="checkbox" name="liczba" value='Piec'>Piec<br>
  73. <input type="checkbox" name="liczba" value='Szesc'>Szesc<br><br>
  74. <input type="submit" value="Losowanie">
  75. </form>
  76. </body>
S-i-R-o
dzieki działa ale tylko jak zaznacze 4 elementy

a chciałbym aby losowało np 2 z 3,4,5,6 elementów lub 1 z 6
chciałbym by było możliwe zdefiniowanie ile elementów ma wylosować z ilu.
pozdrawiam
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.