Losowa liczba i ilość kliknięć problem z porównaniem

0

Witam mam skrypt który losuje liczbę z zakresu 1-13 oraz skrypt który przy kilku kliknięciach daje komunikat.
Chciałbym by komunikat pojawiał się gdy wylosowana liczba jest równa ilości kliknięć.
Gdy mam wpisane

if( 4=== clicks ) przy 4 kliknięciach komunikat się pokazuje
ale gdy zrobię
if( demo=== clicks )
to komunikat przy losowej liczbie się nie pojawia.

<!DOCTYPE html>
<html>
<body>

<button onClick="onClick()">Licz click</button>
<p>ile click : <a id="clicks">0</a></p>

<button onclick="myFunction()">Try it</button>
<p id="demo"></p>

<script type="text/javascript">
       
    var clicks = 0;
    var demo = document.getElementById("demo");
   
    function onClick() {
         
        if( 4=== clicks ){
            alert("policzono do ");
            clicks = 0;
            myFunction();
        } else{
            clicks ++ ;
        }
        document.getElementById("clicks").innerHTML = clicks;
           
    }
    
    function myFunction() {
    var x = Math.floor((Math.random() * 13) + 1);
    document.getElementById("demo").innerHTML = x;
}

</script>

</body>
</html> 
0

Nie wiem, czy dobrze rozumiem, więc przedstawię swoimi słowami.
Chcesz, żeby:

  • przy każdym kliknięciu na guzik był inkrementowany licznik kliknięć,
  • przy każdym kliknięciu na guzik była losowana liczba z zakresu 1 - 13,
  • jeżeli liczba kliknięć równa się wylosowanej liczbie, to ma się pojawić jakiś komunikat,

zgadza się?

Myślę, że masz problem w jasnym zdefiniowaniu, co Twój skrypt ma robić. Znasz składnie, potrafisz używać warunków itd., tylko lepiej zdefiniuj sobie, co ta funkcja ma robić :) I sformatuj ładniej kod, ponieważ jest nieczytelny, przez to i Tobie i nam trudniej znaleźć błąd.

0

właśnie o to mi chodzi co piszesz.
Wiesz ja dopiero się uczę a człowiek na błędach się uczy :)
jak dodam > > if( demo=== clicks )
to gdy wystąpi warunek nic się nie dzieje

0

Zamień poniższy pseudokod na kod:

ustaw licznik na zero
pobierz element #demo
pobierz element #clicks

gdy ktoś kliknie guzik
  zwiększ licznik o jeden
  
  wylosuj liczbę z przedziału od 1 do 13
  
  jezeli wylosowana liczba równa się licznikowi
    ustaw wewnętrzny kod elementu #demo na wylosowaną liczbę
    
  ustaw wewnętrzny kod elementu #clicks na licznik

Możesz sobie pisać w ten sposób kod zanim go przerobisz na prawdziwy kod. Wtedy czytając po polsku algorytm Twojego programu łatwiej zauważysz, że czegoś brakuje, albo że coś się nie trzyma kupy :)

0

Niestety mam problem proszę o pomoc

0

Pokaż kodzik

0

Napisałem takie coś, o to chodzi?

<script>
        let click = 0;
        let number;
        const draw = () => {
            const random = Math.floor(Math.random() * 13 + 1);
            console.log(random);
           number = random;

        }

        const clicker = function () {
            click++;
            console.log(click);
            if (click === number) {

                return alert("Wylosowana liczba równa sie liczbie klikniec");

            }
  }
        window.addEventListener("click", clicker);
        draw();
    </script>
0
<!DOCTYPE html>
<html>
<body>
    
    

<button onClick="onClick()">Licz click</button>
<p>ile click : <a id="clicks">0</a></p>
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>

<script type="text/javascript">
       
    var clicks = 0;
    var demo = 0;
    
 document.getElementById("demo").innerHTML = demo;
 document.getElementById("clicks").innerHTML = clicks;
 
     
    function onClick() {
        
        clicks ++ ;
        document.getElementById("clicks").innerHTML = clicks;
    }
}
    
    function myFunction() {
 var demo = Math.floor((Math.random() * 13) + 1);
 document.getElementById("demo").innerHTML = demo;
}

if(clicks === demo){
    alert("policzono do ");
}



</script>

</body>
</html> 
0

Ale jesteś uparty :P To nie jest to, co Ci napisałem. Podmień TEKST na KOD. Nie zmieniaj nic, tylko usuwaj linijkę i zastępuj kodem.

ustaw licznik na zero
pobierz element #demo do zmiennej demo
pobierz element #clicks do zmiennej clicks

function onClick() {
  zwiększ licznik o jeden

  wylosuj liczbę z przedziału od 1 do 13 do zmiennej randomNumber

  jezeli wylosowana liczba równa się licznikowi
    ustaw wewnętrzny kod elementu #demo na wylosowaną liczbę

  ustaw wewnętrzny kod elementu #clicks na licznik
}

SPOILER - tutaj jest rozwiązanie. Podmieniłem komentarze na kod. To wszystko.

0
Desu napisał(a):

Ale jesteś uparty :P To nie jest to, co Ci napisałem. Podmień TEKST na KOD. Nie zmieniaj nic, tylko usuwaj linijkę i zastępuj kodem.

ustaw licznik na zero
pobierz element #demo do zmiennej demo
pobierz element #clicks do zmiennej clicks

function onClick() {
  zwiększ licznik o jeden

  wylosuj liczbę z przedziału od 1 do 13 do zmiennej randomNumber

  jezeli wylosowana liczba równa się licznikowi
    ustaw wewnętrzny kod elementu #demo na wylosowaną liczbę

  ustaw wewnętrzny kod elementu #clicks na licznik
}

SPOILER - tutaj jest rozwiązanie. Podmieniłem komentarze na kod. To wszystko.

Jest to proste zadanie, ale natrafiłem na problem, bo alert wyświetla się szybciej niż ostatni klik do wylosowanej liczby i pokazanie jej w html.W konsoli jest wszystko ok, kombinowałem z flagą, ale to chyba nie jest dobry pomysł.

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