3E e 3I SIA: Esercizio semplice con Local Storage

Ecco un esercizio semplice e completo suddiviso in due pagine HTML:



1. **`index.html`**: Contiene il modulo (form) per inserire i dati e salvarli nel `localStorage`.

2. **`risultato.html`**: Legge i dati memorizzati nel `localStorage` e li mostra a schermo.

### 1. Prima Pagina: `index.html` (Inserimento dati)

<!DOCTYPE html>

<html lang="it">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Esercizio LocalStorage - Form</title>

    <style>

        body { font-family: Arial, sans-serif; margin: 30px; }

        form { max-width: 300px; display: flex; flex-direction: column; gap: 10px; }

        input, button { padding: 8px; font-size: 14px; }

        button { cursor: pointer; background-color: #007bff; color: white; border: none; border-radius: 4px; }

    </style>

</head>

<body>

    <h2>Inserisci i tuoi dati</h2>

    <form id="mioForm">

        <label for="nome">Nome:</label>

        <input type="text" id="nome" required>

        <label for="cognome">Cognome:</label>

        <input type="text" id="cognome" required>

        <button type="submit">Salva e Vai alla pagina Risultato</button>

    </form>

    <script>

        document.getElementById('mioForm').addEventListener('submit', function(e) {

            e.preventDefault(); // Evita il ricaricamento automatico della pagina

            // Recupera i valori inseriti nei campi di testo

            const valNome = document.getElementById('nome').value;

            const valCognome = document.getElementById('cognome').value;


            // Salva i dati nel localStorage del browser

            localStorage.setItem('utente_nome', valNome);

            localStorage.setItem('utente_cognome', valCognome);

            // Reindirizza l'utente alla seconda pagina

            window.location.href = 'risultato.html';

        });

    </script>


</body>

</html>



### 2. Seconda Pagina: `risultato.html` (Visualizzazione dati)

<!DOCTYPE html>

<html lang="it">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Esercizio LocalStorage - Risultato</title>

    <style>

        body { font-family: Arial, sans-serif; margin: 30px; }

        .box { border: 1px solid #ccc; padding: 15px; border-radius: 5px; max-width: 300px; background-color: #f9f9f9; }

        button { margin-top: 15px; padding: 8px; cursor: pointer; }

    </style>

</head>

<body>

    <h2>Dati Salvati nel LocalStorage</h2>


    <div class="box">

        <p><strong>Nome:</strong> <span id="outNome"></span></p>

        <p><strong>Cognome:</strong> <span id="outCognome"></span></p>

    </div>

    <br>

    <a href="index.html">Torna al Form</a>

    <br><br>

    <button onclick="cancellaDati()">Cancella Dati Salvati</button>


    <script>

        // Recupera i dati salvati tramite le chiavi definite in index.html

        const nome = localStorage.getItem('utente_nome');

        const cognome = localStorage.getItem('utente_cognome');

        // Controlla se esistono e li mostra a video

        if (nome && cognome) {

            document.getElementById('outNome').textContent = nome;

            document.getElementById('outCognome').textContent = cognome;

        } else {

            document.getElementById('outNome').textContent = "Nessun dato trovato";

            document.getElementById('outCognome').textContent = "Nessun dato trovato";

        }

        // Funzione per ripulire il localStorage

        function cancellaDati() {

            localStorage.removeItem('utente_nome');

            localStorage.removeItem('utente_cognome');

            location.reload(); // Ricarica la pagina per aggiornare la vista

        }

    </script>

</body>

</html>

### Come provarlo:

1. Salva i due file nella stessa cartella nominando il primo `index.html` e il secondo `risultato.html`.

2. Apri `index.html` nel browser, compila i campi e invia il form.

3. Verrai reindirizzato a `risultato.html`, dove verranno letti ed estratti i dati appena memorizzati nel browser.

Questo esercizio serve a capire come far "comunicare" due pagine HTML diverse utilizzando la memoria del browser (`localStorage`). È uno schema fondamentale nello sviluppo web front-end quando vogliamo salvare temporaneamente delle informazioni inserite da un utente (come le preferenze, il nome o lo stato di un form) senza dover utilizzare un database sul server.


Ecco la spiegazione dettagliata passo dopo passo di come funziona il codice diviso nelle due pagine.

### 1. Il concetto chiave: Che cos'è il `localStorage`?

Il `localStorage` è un oggetto messo a disposizione dai browser moderni che permette di memorizzare coppie di **chiave-valore** direttamente sul computer dell'utente.

* I dati salvati rimangono disponibili anche se cambi pagina, se ricarichi il browser o, in alcuni casi, anche se chiudi e riapri il browser.

* Si accede tramite due comandi principali:

* `localStorage.setItem('chiave', 'valore')` per salvare un dato.

* `localStorage.getItem('chiave')` per leggerlo.


### 2. Prima Pagina: `index.html` (La raccolta dei dati)

In questa pagina l'utente compila un modulo (`form`) inserendo il proprio nome e cognome.

* **La struttura HTML:** C'è un tag `<form id="mioForm">` con due campi di input (`<input type="text">`) e un pulsante di invio (`type="submit"`).

* **La gestione in JavaScript:**

1. `document.getElementById('mioForm').addEventListener('submit', ...)`: Mette "in ascolto" il form. Quando l'utente clicca sul pulsante di invio, scatta la funzione JavaScript.

2. `e.preventDefault()`: **Fondamentale!** Di default, quando un form viene inviato, la pagina si ricarica o tenta di inviare i dati a un server esterno. Questo comando blocca il comportamento predefinito, permettendoci di gestire i dati interamente con JavaScript.

3. `const valNome = document.getElementById('nome').value;`: Prende il testo scritto dall'utente dentro la casella del nome.

4. `localStorage.setItem('utente_nome', valNome);`: Prende quel testo e lo memorizza nel browser associandolo alla chiave `'utente_nome'`. Lo stesso viene fatto per il cognome.

5. `window.location.href = 'risultato.html';`: Forza il browser a cambiare pagina, aprendo la seconda pagina (`risultato.html`).

### 3. Seconda Pagina: `risultato.html` (La lettura e visualizzazione)

Questa pagina si apre automaticamente dopo il reindirizzamento e ha il compito di recuperare i dati salvati.

* **La lettura dei dati:**

1. `const nome = localStorage.getItem('utente_nome');`: Va a pescare nella memoria del browser il valore associato alla chiave `'utente_nome'` creata nella pagina precedente.

2. **Il controllo (`if (nome && cognome)`):** Verifica che i dati esistano davvero. Se l'utente prova ad aprire `risultato.html` direttamente senza passare dal form, i valori saranno vuoti (`null`).

3. `document.getElementById('outNome').textContent = nome;`: Prende il testo recuperato dal `localStorage` e lo inserisce dentro un tag HTML (`<span>`) predisposto nella pagina, rendendolo visibile all'utente.

* **La pulizia (`cancellaDati`):**

* La funzione usa `localStorage.removeItem(...)` per cancellare le chiavi salvate e `location.reload()` per aggiornare la pagina, mostrando così come resettare lo stato dell'applicazione.




Commenti

Post popolari in questo blog

Esercizi in Excel e fogli di Google

Simulazioni di reti (con Cisco Packet Tracer)