Counter JavaScript

Counter JavaScript

In questo articolo, esploreremo la creazione di un counter in JavaScript, fornendo implementazioni che consentono sia l’incremento che il decremento in modi diversificati e interessanti.

Realizziamo un counter in JavaScript

In questo primo progetto, ci immergeremo nella creazione di un counter utilizzando esclusivamente JavaScript Vanilla. Sperimentate cliccando sui pulsanti sottostanti per incrementare o decrementare la variabile del counter, partendo dal valore iniziale di 0.

JavaScript Counter

0

Codice HTML

Per iniziare dunque, esploriamo il codice HTML necessario per il nostro progetto.

<div class="container">
    <h3>JavaScript Counter</h3>
    <button id="minus">-</button>
    <span id="number">0</span>
    <button id="plus">+</button>
</div>

Abbiamo inserito il button minus che ha la funzione di decrementare la variabile number ed il button plus che invece ha la funzione di incrementarla.

Per identificare ogni elemento abbiamo utilizzato un id, allo scopo di poter poi utilizzare il metodo getElementById in JavaScript.

Codice CSS per la realizzazione del counter in JavaScript

Successivamente, possiamo arricchire il nostro progetto aggiungendo del codice CSS a piacere. Nel mio caso, ho incluso il seguente:

.container {
    background-color: #2c45a3;
    text-align: center;
    padding: 20px;
    color: white;
}

h3 {
  font-size: 30px;  
}

button {
  font-size: 30px;
  background-color: #fc7180;
  color: #2c45a3;
  border: none;
  border-radius: 10px;
  padding: 10px 20px;
  cursor: pointer;
}

#number {
  font-size: 40px;
  padding: 0 50px;
}

Codice JavaScript per la realizzazione del counter

Adesso, presentiamo il codice JavaScript che fa uso del metodo addEventListener per catturare il click del mouse sui pulsanti “più” e “meno”. Al click di ciascun pulsante, l’azione svolta sarà l’incremento oppure il decremento della variabile, con successiva scrittura del suo valore nell’elemento con id “number”, attraverso la proprietà innerHTML.

Ecco di seguito una possibile implementazione:

const number = document.getElementById('number');
const buttonPlus = document.getElementById('plus');
const buttonMinus = document.getElementById('minus');

buttonPlus.addEventListener('click', add);
buttonMinus.addEventListener('click', subtract);

let value = 0;

function add() {
  value++;
  number.innerHTML = value;
}

function subtract() {
  value--;
  number.innerHTML = value;
}

Counter con diversi valori di incremento

In questo secondo esempio, effettuiamo l’incremento del counter utilizzando valori differenti: 1, 5, 10 o 100. Cliccate dunque sui rispettivi pulsanti per osservare l’incremento della variabile di partenza:

JavaScript Counter

0

In questo secondo esempio, abbiamo adottato l’uso dell’evento onclick direttamente sui pulsanti nel codice HTML.



<div class="container">
        <h3>JavaScript Counter</h3>
        <span id="number">0</span>
        <button onclick="add(1)">1</button>
        <button onclick="add(5)">5</button>
        <button onclick="add(10)">10</button>
        <button onclick="add(100)">100</button>
</div>

È importante notare che abbiamo incluso un secondo parametro in base al valore desiderato per l’incremento. Di seguito, presento il codice JavaScript che ho sviluppato:

const number = document.getElementById('number');

let value = 0;

function add(n) {
  value = value + n;
  number.innerHTML = value;
}

Conclusione

In questo articolo, abbiamo presentato un semplice counter implementato in JavaScript. Prossimamente, esploreremo una serie di progetti affascinanti basati su JavaScript.

Alcuni link utili

Indice tutorial JavaScript

Il linguaggio JavaScript

Come utilizzare JavaScript alert

Variabili in JavaScript

Gioco indovina numero in JavaScript

Gioco della morra cinese in JavaScript

Semplice quiz utilizzando gli array

Come realizzare il gioco dei dadi online

JavaScript to do list

JavaScript to do list

In this lesson we will create a simple JavaScript to do list, a classic JavaScript exercise that allows you to experiment with the methods learned so far.

To carry out this project, in fact, we will use some methods to manipulate the DOM in JavaScript.

In the meantime, try the project that we are going to create together by inserting an item and then clicking on the add button in the figure below:

App To Do List

To do list in JavaScript – development

First we create the HTML code of the project.

So let’s create an input box with a button and prepare a list where all the elements that we will add gradually will appear.





We then create any CSS to give a graphic touch, for example I have created this:



.container{
    background: #ff6676;
    padding: 30px;   
    display: flex;
    flex-direction: column;
}

.container h3{
    color: white;
    text-align: center;
    margin-bottom: 15px;
    height: auto;
}

form{
    display: flex;
    width: 100%;
}

.textInput{
    width: 100%;
    border: none;
    padding: 14px;
}

#add{
    width: 30%;
    cursor: pointer;
    background: #2c45a3;
    border: none;
    color: white;
    font-size: 18px;
}

ul#lists{
    display: flex;
    flex-direction: column;
    margin: 10px 0;
    list-style: none;
}

ul#lists li{
    padding: 12px;
    background: white;
    border: 1px solid #2c45a3;
    display:flex;
    justify-content: space-between;
}

.delete{
    padding: 10px;
    cursor: pointer;
    border: none;
    background: #ff6676;
    color: white;
}

Finally we develop the JavaScript code necessary to make our to do list work:



const buttonAdd = document.getElementById('add');
const lists = document.getElementById('lists');
const textInput = document.querySelector('.textInput');

buttonAdd.addEventListener('click', generateList);

function generateList(event) {
    event.preventDefault();

    if (textInput.value === '') return;

    const li =  document.createElement('li');
    lists.appendChild(li);    
    li.appendChild(document.createTextNode(textInput.value));
    
    const buttonDelete = document.createElement('button');
    buttonDelete.className = 'delete';
    buttonDelete.appendChild(document.createTextNode('X'));    
    li.appendChild(buttonDelete);
    
    textInput.value = '';
    
    buttonDelete.addEventListener('click', (event) =>{
        const parentNodeEl = event.target.parentNode;
        setTimeout(() =>{
            parentNodeEl.remove();
        }, 500)
        
    });
         
}



First of all we checked that the input box contained some text and otherwise we exit the function with a return. In this way, if the box is empty, a list is not created.

After, we used the addEventListener method to capture the first click on the add button to add an item in the list and then on the delete button to delete the corresponding item.

Within the generateList function we used the createElement and createTextNode methods respectively to create the necessary tags (li and button) and add text.

After adding the entry we empty the input box.

Conclusion

In this lesson we have developed a simple to do list in JavaScript, try developing one yourself and write in the comments below. In the next lessons we will develop many other creative projects.

Some useful links

JavaScript tutorial

JavaScript Calculator

Object in JavaScript

For in loop

Caesar cipher decoder

Slot Machine in JavaScript

JavaScript to do list

to do list in JavaScript

In questa lezione realizzeremo una semplice to do list in JavaScript. Si tratta di un esercizio classico che ci permetterà di mettere in pratica i concetti appresi finora e di sperimentare l’utilizzo di JavaScript per manipolare il DOM e gestire eventi.

Per realizzare questo progetto infatti utilizzeremo alcuni metodi per manipolare il DOM in JavaScript.

Intanto provate il progetto che andremo a realizzare assieme inserendo una voce e cliccando poi sul pulsante add della figura sotto:

Lista delle Attività

    To do list in JavaScript – sviluppo del codice

    Innanzitutto realizziamo il codice HTML del progetto.

    Creiamo dunque una casella di input con un button e predisponiamo una lista dove appariranno tutti gli elementi che aggiungeremo a mano a mano.

    <div id="flexContainer">
        <h1>Lista delle Attività</h1>
        <div id="inputContainer">
           <input type="text" id="taskInput" placeholder="Aggiungi una nuova attività">
           <button class="addBtn" id="addButton">Aggiungi</button>
        </div>
        <ul id="taskList"></ul>
    </div>

    Realizziamo poi del CSS a piacere per dare un tocco grafico, io ad esempio ho realizzato questo:

    body {
          font-family: Arial, sans-serif;
    
          background-color: #f4f4f4;
          display: flex;
          justify-content: center;
          align-items: center;
     }
    
    #flexContainer {
          display: flex;
          flex-direction: column;
          align-items: center;
          width: 600px;
          padding: 20px;
          margin: 80px;
          border-radius: 8px;
          background-color: #fff;
          box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
    }
    
    h1 {
        color: #333;
        margin-bottom: 20px;
     }
    
    #inputContainer {
         display: flex;
         margin-bottom: 20px;
     }
    
    input[type="text"] {
         flex: 1;
         padding: 8px;
         font-size: 1em;
         margin-right: 10px;
    }
    
    button {
         padding: 10px 20px;
         font-size: 1em;
         cursor: pointer;
         border: none;
         border-radius: 4px;
         transition: background-color 0.3s;
     }
    
    button.addBtn {
         background-color: #4CAF50;
         color: #fff;
     }
    
    button.editBtn {
          background-color: #3498db;
                color: #fff;
    }
    
    button.deleteBtn {
        background-color: #e74c3c;
        color: #fff;
    }
    
    button:hover {
         background-color: #45a049;
     }
    
    ul {
        list-style-type: none;
        padding: 0;
     }
    
     li {
        font-size: 1.2em;
        margin-bottom: 10px;
        display: flex;
        align-items: center;
        width: 100%;
     }
            
    .taskText {
         flex: 1;
      }
    
    .buttonContainer {
          display: flex;
          margin-left: auto;
      }
    
     .buttonContainer button {
          margin-left: 10px;
    }
    
    /* Finestra modale */
    #modal {
          display: none;
          position: fixed;
          top: 0;
          left: 0;
          width: 100%;
          height: 100%;
          background-color: rgba(0, 0, 0, 0.5);
          justify-content: center;
          align-items: center;
     }
    
    #modalContent {
          background-color: #fff;
          padding: 20px;
          border-radius: 8px;
          box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
    }
    
    #modalInput {
          margin-bottom: 10px;
    }
    
     #modalButtons {
          display: flex;
          justify-content: flex-end;
    }
    
    #modalButtons button {
          margin-left: 10px;
    }

    Corso su JavaScript

    Infine sviluppiamo il codice JavaScript necessario a far funzionare la nostra to do list:

    const addButton = document.getElementById('addButton');
    addButton.addEventListener('click', function () {
        let taskInput = document.getElementById('taskInput').value;
        const taskList = document.getElementById('taskList');
    
        if (taskInput.trim() !== '') {
             const newTask = document.createElement('li');
    
             newTask.innerHTML = `
              <span class="taskText">${taskInput}</span>
              <div class="buttonContainer">
                  <button class="editBtn" onclick="openModal(this)">Modifica</button>
                  <button class="deleteBtn" onclick="deleteTask(this)">Elimina</button>
               </div>  `;
    
               taskList.appendChild(newTask);
               taskInput = '';
                }
        });
    
        const modal = document.getElementById('modal');
        const modalInput = document.getElementById('modalInput');
        let editingTask = null;
    
        function deleteTask(button) {
            const taskItem = button.parentNode.parentNode;
            const confirmation = window.confirm("Sei sicuro di voler eliminare questa attività?");
        
        if (confirmation) {
            taskItem.parentNode.removeChild(taskItem);
        };
    
     }
            
    function openModal(button) {
        const taskItem = button.parentNode.parentNode;
        const taskText = taskItem.querySelector('.taskText');
        modalInput.value = taskText.textContent;
        editingTask = taskItem;  // Memorizza l'attività che sta per essere modificata
        modal.style.display = 'flex';
     }
    
    document.getElementById('confirmEdit').addEventListener('click', confirmEdit);
    function confirmEdit() {
        const taskText = modalInput.value.trim();
    
        if (taskText !== '') {
           const span = editingTask.querySelector('.taskText');
           span.textContent = taskText;
    
           closeModal();
         }
     }
    
    document.getElementById('closeModal').addEventListener('click', closeModal);
        function closeModal(confirmEdit) {
            modal.style.display = 'none';
            editingTask = null;  // Resetta l'attività in modifica
    }

    Descrizione dell’algoritmo per la to do list in JavaScript

    In questo esempio ho creato alcune funzioni per la gestione della to-do list in JavaScript.

    Innanzitutto ho creato la funzione aggiungi attività, e attraverso un listener l’ho collegata al button addButton. Dunque quando si clicca sul pulsante si avvia la funzione che consente di recuperare il valore dalla casella di input. Prima di inserirlo nella lista di cose da fare controlliamo che il campo di input non sia vuoto e se questa condizione è vera aggiunge l’attività attravesro al creazione di un nuovo elemento li. Per ogni attività ho creato anche due pulsanti per l’aggiunta e l’eliminazione della voce dell’elenco.

    Dopo ho creato la funzione per eliminare l’attività che viene chiamata al click sul button “Elimina” all’interno dell’attività. In questa funzione ottengo il riferimento all’elemento <li> padre dell’attività e prima dell’eliminazione chiedo conferma attraverso una finestra di alert. Se l’utente conferma, rimuove l’elemento <li> dall’elenco.

    Quindi ho sviluppato la funzione per la modifica dell’attività definendo una finestra openModal che viene chiamata quando viene cliccato il bottone “Modifica” all’interno di un’attività. Questa funzione Ottiene il riferimento all’elemento <li> padre dell’attività e al testo dell’attività. Dunque mostra una modal (una finestra modale) con un campo di input prepopolato con il testo dell’attività. Inoltre memorizza l’attività che sta per essere modifica.

    Quando scriviamo nella casella di input le modifiche possiamo confermarle attraverso il pulsante “Modifica”. A questo pulsante ho infatti aggiunto un listener per gestire il click dell’utente. Quando viene cliccato il bottone di conferma, recupera il testo dall’input della modal. Se il testo non è vuoto, aggiorna il testo dell’attività nell’elemento <li> corrispondente e chiude la modal.

    Altrimenti possiamo chiudere la finestra modale senza apportare nessuna modifica, cliccando sul pulsante Annulla. Quando si clicca su questo pulsante di chiusura, si chiude la modale nascondendola. Inoltre si resetta la variabile editingTask a null.

    Conclusione

    In questa lezione abbiamo sviluppato una semplice to do list in JavaScript, provate anche voi a svilupparne una e scrivete nei commenti sotto. Nelle prossime lezioni svilupperemo tanti altri progetti creativi.

    Alcuni link utili

    Indice tutorial JavaScript

    Il linguaggio JavaScript

    Come utilizzare JavaScript alert

    Variabili in JavaScript

    Gioco indovina numero in JavaScript

    Gioco della morra cinese in JavaScript

    Semplice quiz utilizzando gli array

    Come realizzare il gioco dei dadi online

    JavaScript eval

    JavaScript eval

    The eval function in JavaScript evaluates the expression passed as an argument and executes it if there is an operation.

    The syntax is as follows: eval(string).

    JavaScript eval examples

    Here is a series of demonstrative examples on the use of eval.

    
    
    console.log(eval('2 + 13'));
    var x = 10;
    var y = 3;
    console.log(eval('x + y'));
    console.log(eval(' x / y'));
    
    

    However, remember that this function is slower than the alternatives.

    It can also be dangerous as it runs the code with page administrator privileges.

    Some useful links

    JavaScript tutorial

    JavaScript Calculator

    Object in JavaScript

    For in loop

    Caesar cipher decoder

    Slot Machine in JavaScript

    Introduction to JavaScript language

    Learn JavaScript – basic concepts

    JavaScript functions and return

    JavaScript Callback

    Callbacks

    Array method and callback function

    Callback functions – examples

    JavaScript string

    JavaScript string

    In this lesson we will study the JavaScript String function that is used to return a string from a value passed as an argument.

    The syntax is as follows: string(object). Where object can be a number value, a Boolean value.

    JavaScript string examples

    These are some examples:

    
    
    console.log(String('13years'));
    console.log(String('thirteen'));
    console.log(String('13:50'));
    console.log(String('13-01-20'));
    console.log(String('13 01 20'));
    console.log(String('true'));
    console.log(String('13.50'));
    console.log(String('13'));
    console.log(String(''));
    var num = 10;
    console.log(String(num));
    var arrayNumeri = [7,12];
    console.log(String(arrayNumeri));
    
    

    Try these simple examples on JavaScript string method, you will always see a string in the browser console, even when we pass a numeric value.

    Some useful links

    JavaScript tutorial

    JavaScript Calculator

    Object in JavaScript

    For in loop

    Caesar cipher decoder

    Slot Machine in JavaScript

    Introduction to JavaScript language

    Learn JavaScript – basic concepts

    JavaScript variables and costants

    Conditional instruction if, else