Løsningsforslag


<!DOCTYPE html>
<html lang="no">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="author" content="BITJUNGLE Rune Mathisen">
    <title>Gjett tallet</title>
    <script src="script.js" defer></script>
    <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
    <link rel="stylesheet" href="style.css">
    <style>
        button {
            width: 4rem;
        }
    </style>
</head>

<body>
    <main class="w3-container">
        <h1>Gjett tallet</h1>
        <div id="knappeOmraade" class="w3-container"></div>
        <div id="respons" class="w3-container">Gjett hvilket tall jeg tenker på!</div>
        <div id="antall" class="w3-container"></div>
    </main>
</body>

<script>
    const responsElement = document.querySelector("#respons");
    const knappeOmraade = document.querySelector("#knappeOmraade");
    const antallElement = document.querySelector("#antall");
    const antallKnapper = 100;
    let antallGjettet = 0;
    let hemmeligTall = null;

    function init() {
        hemmeligTall = lagHemmeligTall();
        for (let n = 1; n < antallKnapper + 1; n++) {
            lagKnapp(n);
        }
    }

    function lagHemmeligTall() {
        return Math.floor(Math.random() * antallKnapper + 1);
    }

    function lagKnapp(nummer) {
        const knapp = document.createElement('button');
        const id = 'id' + nummer.toString();
        knapp.setAttribute('id', id);
        knapp.setAttribute('class', 'w3-button w3-circle w3-black');
        knapp.innerHTML = nummer.toString();
        knappeOmraade.appendChild(knapp);
    }

    function endreKnapp(id, farge = 'w3-red') {
        const element = document.querySelector('#' + id);
        element.classList.remove('w3-black');
        element.classList.add(farge);
        element.removeAttribute('id');
    }

    function sjekkGjettetTall(tall) {
        if (tall > hemmeligTall) {
            return 'Det var for høyt!';
        } else if (tall < hemmeligTall) {
            return 'Det var for lavt';
        } else {
            return 'Riktig!';
        }
    }

    document.addEventListener('click', (event) => {
        if (event.target.id === '') return;
        const gjettetTall = parseInt(event.target.id.substring(2));
        if (!isNaN(gjettetTall)) {
            antallGjettet++;
            antallElement.innerHTML = `Du har gjettet ${antallGjettet} ganger`;
            let respons = sjekkGjettetTall(gjettetTall);
            if (respons === 'Riktig!') {
                endreKnapp(event.target.id, 'w3-green');
            } else {
                endreKnapp(event.target.id, 'w3-red');
            }
            responsElement.innerHTML = respons;
        }
    });

    window.addEventListener('load', init);
</script>

</html>