Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][JavaScript]losowanie elementów z tablicy i sumowanie wartości
mkoszar
post 15.06.2021, 07:39:42
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 10.09.2020

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


Dzień dobry. Mam pewną prostą wydawałoby się sprawę.

  1. const addsArray = ["cebula", "kukurydza", "pomidor", "pieczarki", "oliwki" , "brokuły"];
  2.  
  3. const random = Math.floor(Math.random() * addsArray.length);
  4.  
  5. document.getElementById("wygenerowany_z_tablicy").innerHTML = addsArray[random];


I teraz jak zrobić (bo cebula kosztuje np. 1 zł, kukurysza 3 zł itd..), żeby po wylosowaniu dodatku również jego wartość ? To nie za bardzo wiem jak to zapisać.

Bo idea jest taka, żeby wylosować z tablicy dodatki i zliczać ich wartości po wylosowaniu smile.gif
Go to the top of the page
+Quote Post
nospor
post 15.06.2021, 08:54:02
Post #2





Grupa: Moderatorzy
Postów: 36 556
Pomógł: 6314
Dołączył: 27.12.2004




Nigdzie nie widze cen dodatkow


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mkoszar
post 15.06.2021, 20:53:21
Post #3





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 10.09.2020

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


Jasne, zapomniano smile.gif

  1.  
  2. const addsArray = ["cebula", "kukurydza", "pomidor", "pieczarki", "oliwki" , "brokuły"];
  3. const cenyArray = [1, 1, 2, 1, 4 ,3];
  4.  
  5. const random = Math.floor(Math.random() * addsArray.length);
  6.  
  7. document.getElementById("wygenerowany_z_tablicy").innerHTML = addsArray[random];
  8. document.getElementById("wygenerowany_z_tablicy").innerHTML = cenyArray[random];


Wydaje się opanowany temat.. Ale czy robienie dwóch tablic jest takie spoko ? ale działa
Go to the top of the page
+Quote Post
nospor
post 16.06.2021, 09:21:27
Post #4





Grupa: Moderatorzy
Postów: 36 556
Pomógł: 6314
Dołączył: 27.12.2004




Lepiej trzymac to w tablicy obiektow cos ala:

const addsArray = [{produkt: "cebula", cena: 1}, {produkt: "brokul", cena: 2}];


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mkoszar
post 17.06.2021, 18:41:47
Post #5





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 10.09.2020

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


Witam. dziękuję za podpowiedź, a jeszcze w temacie:

Chciałbym uzyskać efekt takiego losowania i mam kod:

  1. var i=0;
  2. do {
  3. var myVar = setInterval(function(){ losuj_dodatek() }, 100);
  4. function losuj_dodatek() {
  5. const random = Math.floor(Math.random() * addsArray.length);
  6. document.getElementById("wygenerowany_dodatek").innerHTML = addsArray[random];
  7. document.getElementById("cena_dodatku").innerHTML = cenyArray[random];
  8. }
  9. i++;
  10. } while (i<5);


Ale idzie w nieskończoność. Wydaje mi się że coś jest nie tak
Go to the top of the page
+Quote Post
trueblue
post 17.06.2021, 22:01:22
Post #6





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

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


Zerknij do dokumentacji funkcji setInterval - sprawdź co robi.


--------------------
Go to the top of the page
+Quote Post
mkoszar
post 18.06.2021, 08:01:20
Post #7





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 10.09.2020

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


MHM, dzięki za naprowadzenie smile.gif działanie spełnia oczekiwania

tak wygląda cała funkcja losująca składnik:

  1. function myFunction(){
  2. var kwota = document.getElementById("valBox").textContent;
  3. document.getElementById("total").innerHTML = kwota;
  4.  
  5. const addsArray = ["cebula", "papryka konserwowa", "kukurydza", "salami", "kabanos", "pomidor", "pieczarki", "bekon", "oliwki","ananas","małże","krewetki","tuńczyk","ser Lazar","brokuły","łosoś wędzony","szpinak","gorgonzola","anchois","szynka","kurczak"];
  6. const cenyArray = [1,1,1,4,2,2,2,3,2,2,3,3,3,3,3,3,3,4,4,2,4];
  7.  
  8. var myVar = setInterval(losuj_dodatek, 50);
  9. var i=0;
  10. function losuj_dodatek() {
  11. const random = Math.floor(Math.random() * addsArray.length);
  12. document.getElementById("wygenerowany_dodatek").innerHTML = addsArray[random];
  13. document.getElementById("cena_dodatku").innerHTML = cenyArray[random];
  14. i++;
  15. document.getElementById("iteracje").innerHTML = i;
  16. if (i>30){
  17. clearInterval(myVar);}
  18. }
  19. }



Zrobiłem (przekopiowałem smile.gif) jeszcze

  1. <form oninput="showVal()">
  2. <input type="range" min="15" max="55" step="1" id="inVal" value="15">
  3. </form>
  4.  


co za tym idzie:

Ustawiasz na suwaku kwotę, np 20. I zapuszczasz losowanie, jeśli wylosowany składnik (jego cena) jest mniejsza od zadanej to trzeba by dodać kolejny składnik i go wylosować.. I teraz

var li = document.createElement("li"); ?





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: 2.05.2025 - 04:23