Problem z prostą grą w przeglądarce (zgadnij liczbę)

0

Witam
Napisałem taki kod, patrzyłem się na niego z pół godziny i nijak nie udało mi się zrozumieć w czym tkwi problem. Otóż odpalany jest zawsze pierwszy warunek mimo, że pozostałe warunki są poprawnie napisane. Według mnie skrypt wygląda okej.

W dodatku po załadowaniu strony Od razu widać napis "Brak cyfry", a powinien się pojawić dopiero po kliknięciu na 'Check'

screenshot-20220327181342.png

To screenshot-20220327181701.png
powinno wywołać funkcję OnClickFunc a ta z kolei wywołuje dane zapisane w zmiennej.

0

A sorrki, daje kod

'use strict';

// Cyfra którą wpisujemy do okienka
const guess = Number(document.querySelector('.guess').value);

// funkcja zapisana w zmiennej która wyświetla text w
// odpowiednio zdefiniowanym miejscu na stronce.
let message = function(text) {
    document.querySelector('.message').textContent = text
}

// losowa liczba
let secretNumber = Math.floor(Math.random() * 20) + 1;


function OnClickFunc() {
    if (!guess) {
        message('Brak cyfry!');
        document.querySelector('.message').style.color = 'red';
    }
    else if (guess > secretNumber){
        message('Too high!');
    }
    else if (guess < secretNumber){
        message('Too low!');
    }
    else {
        message('👏😜 You guessed right!');
        document.querySelector('.message').style.backgroundColor =
        'blue';
    }
};

document.querySelector('.check').addEventListener('click', OnClickFunc())
console.log('secret number is ' + secretNumber)

4
const guess = Number(document.querySelector('.guess').value);

to się odpali raz na początku, więc nic dziwnego, że tam nic nie masz. Powinieneś ustawiać tę zmienną dopiero jak użytkownik zmieni to pole tekstowe.

W dodatku po załadowaniu strony Od razu widać napis "Brak cyfry", a powinien się pojawić dopiero po kliknięciu na 'Check'

Ponieważ sam uruchamiasz tę funkcję:

document.querySelector('.check').addEventListener('click', OnClickFunc())

jeśli dajesz OnClickFunc(), to się odpala funkcja. Powinieneś dać OnClickFunc (bez nawiasów), wtedy nie wywołujesz funkcji, tylko przekazujesz referencję do funkcji OnClickFunc.

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