Przedział liczbowy - los

0

Dzień dobry,

Próbuję stworzyć skrypt który losuje dwie liczby całkowite w przedziale 5 - 20, następnie ma wyświetlić wynik.

                       <input type="button" onclick="losuj(x, y)" value="Wylosuj" /><br />
                       <p id="wynik">WYNIK</p>
              function losuj(x, y) 
                {
                    {
                        let x = 5;
                        let y = 20;
                    }
                    // var los = Math.floor(Math.random() * (y - x) ) + x; - (los) również nie działa z onclick
                    return Math.floor(Math.random() * (y - x + 1) ) + x;
                }
                            document.getElementById("wynik").innerHTML = losuj(x, y);

Zanim napisałem tutaj, trochę się naszuakłem ale coś mi nie wychodzi i czegoś mi tu brakuje.

1
<input type="button" onclick="losuj(5, 20)" value="Wylosuj" /><br />
<p id="wynik">WYNIK</p>
function losuj(x, y) {         
  const result = Math.floor(Math.random() * (y - x + 1) ) + x;
  document.getElementById("wynik").innerHTML = result;
}

https://jsfiddle.net/ps736rcv/

0

Nie wiem co tu się dzieje, skopiowałem kod od a do z bo myślałem że wpisuje coś źle ale i tak nie działa.
Nie miałem jeszcze problemów z Bracketsem.

Zrobiłem aktualizacje i kod poszedł.. Działa nawet (y - x) bez dodawania tego x + 1 w nawiasie. Dziękuję

0

Jeszcze trochę odkopie temat.

Teraz próbuję zrobić coś takiego że, użytkownik musi podać iloczyn tych dwóch liczb,
jeżeli odpowie prawidłowo to w miejscu "tekst" wyświetli się odpowiedź "Prawda", jeżeli odpowie błędnie
to za każdym razem w alercie będzie proszony o podanie wyniku prawidłowego.

screenshot-20191219200512.png

Mam taki kod

                        <input type="button" onclick="losuj1(5, 20)" value="Liczba 1" style="margin-right: 20px;" /> 
                        <input type="button" onclick="losuj2(5, 20)" value="Liczba 2" /> 

                        <text>Podaj iloczyn dwóch wylosowanych liczb:</text>
                        <br /><br />
                        <input type="number" style="width: 50px;" id="wynik3"/>
                        <br /><br />
                        <input type="submit" value="Potwierdź" onclick="take()"/>

                        <text id="wynik4">Tekst</text>
            function losuj1(x, y)
            {         
                var z = Math.floor(Math.random() * (y - x + 1) ) + x;
                document.getElementById("wynik").innerHTML = z;
            }
            function losuj2(a, b)
            {         
                var c = Math.floor(Math.random() * (b - a + 1) ) + a;
                document.getElementById("wynik2").innerHTML = c;
            }

            function take()
            {
                var one = wynik;
                var two = wynik2;
                
                if ( (wynik/wynik2) && (wynik2/wynik) )
                {
                    document.getElementById("wynik3").value;
                
                    while(true)
                    {
                        document.getElementById("wynik4").innerHTML = "Prawda";
                    }
                    while(false)
                    {
                        alert("Błędna odpowiedź. Spróbuj jeszcze raz.");
                    }
                }
            }

Przy okazji zapytam jeszcze czy znacie jakieś dobre strony gdzie można się jakoś praktycznie pouczyć js'a?
Przeglądam trochę "w3schools" ale nie zawsze potrafię coś dobrze skleić w całość
Fajnie byłoby znać więcej stron z których można coś wynieść.

Pozdrawiam

1

Olaboga...

Nawet nie wiem jak zacząć. To co napisałeś ma tyle błędów, że nie dość że nie działa, to jeszcze spowoduje wysypanie się przeglądarki. (przez while(true)), a do tego nie ma sensu.

Masz tutaj gotowe rozwiązanie, i spróbuj dojść o co w nim chodzi (nie przejmuj się CSS, tak je dodałem, żeby jakoś to wyglądało).

<button id="random-number-1">Losuj pierwszą liczbę</button>
<button class="button--2" id="random-number-2">Losuj drugą liczbę</button>
<div class="number number--1" id="number-1"></div>
<div class="number number--2" id="number-2"></div>
<div class="input">
  Podaj iloczyn dwóch wylosowanych liczb
  <input id="input" type="number">
  <button id="confirm">Potwierdź</button>
</div>
<div id="result" class="result"></div>
const randomNumber1Button = document.getElementById('random-number-1');
const randomNumber2Button = document.getElementById('random-number-2');

const randomNumber1Result = document.getElementById('number-1');
const randomNumber2Result = document.getElementById('number-2');

const input = document.getElementById('input');
const confirm = document.getElementById('confirm');
const result = document.getElementById('result');

let randomNumber1;
let randomNumber2;

function generateRandomNumberInRange(x, y) {
	return Math.floor(Math.random() * (y - x + 1) ) + x;
}

randomNumber1Button.addEventListener('click', () => {
	randomNumber1 = generateRandomNumberInRange(5, 20);
  randomNumber1Result.innerHTML = randomNumber1;
});
randomNumber2Button.addEventListener('click', () => {
	randomNumber2 = generateRandomNumberInRange(5, 20);
  randomNumber2Result.innerHTML = randomNumber2;
});

confirm.addEventListener('click', () => {
	if (!(randomNumber1 && randomNumber2)) {
  	alert('Należy wylosować obie liczby');
    return;
  }
  const inputNumber = parseInt(input.value, 10);
  if (!inputNumber) {
  	alert('Należy podać iloczyn wylosowanych liczb');
    return;
  }
  if (randomNumber1 * randomNumber2 !== inputNumber) {
  	alert('Błędna odpowiedź, spróbuj jeszcze raz');
    return;
  }
  result.innerHTML = 'Prawda';
});

A tu działająca wersja

0

hahahah
Wezmę się za to jutro bo dziś już chyba tego nie ogarnę.
Swoją drogą dzięki za pomoc i za szczerość, że też w ogóle ci się chce :D
Napiszę jeszcze jak już mi się uda to wszystko poukładać do kupy

1 użytkowników online, w tym zalogowanych: 0, gości: 1