Créer un Mini Carnet de Notes avec le HTML Local Storage 📒✨

Créer un Mini Carnet de Notes avec le HTML Local Storage 📒✨

Bonjour, cher sorcier du code ! 🧙‍♂️💻
Aujourd’hui, je vais te montrer comment stocker des données dans le navigateur, ajouter des notes, les supprimer et même les catégoriser. Et nous allons le faire avec un Mini Carnet de Notes ! 💌

Quand l’utilisateur demande : « Puis-je sauvegarder ma note ? », tu peux répondre avec confiance : « Bien sûr, mon amour, je m’en occupe 😏. »

Cet article sera amusant, convivial, éducatif et rempli de conseils pratiques.


1️⃣ Qu’est-ce que le Local Storage ? Infos de Base 🤔

Local Storage est la manière magique de stocker des données dans le navigateur. 🌟

Caractéristiques :

  • Données persistantes : Les données restent même si la page est rafraîchie.
  • Système clé-valeur : Chaque donnée est stockée avec une clé.
  • Stockage jusqu’à 5 Mo : Suffisant pour de petites notes.
  • Stocke des chaînes : Utilisez JSON pour des objets ou des tableaux.

🔹 Exemple : Local Storage simple

// Ajouter des données
localStorage.setItem('name', 'Cansu 😍');

// Lire les données
const name = localStorage.getItem('name');
console.log(name); // Résultat : Cansu 😍

// Supprimer des données
localStorage.removeItem('name');

// Tout effacer
localStorage.clear();

💡 Astuce pratique : Local Storage ne stocke que des chaînes. Pour stocker des objets ou des tableaux :

const notes = ['Note 1', 'Note 2'];
localStorage.setItem('notes', JSON.stringify(notes));

const savedNotes = JSON.parse(localStorage.getItem('notes'));
console.log(savedNotes); // ['Note 1', 'Note 2']


2️⃣ Créer l’Interface HTML 🖌️

Créons l’interface avec des champs, boutons et sélection de catégories :

<h1>Mini Carnet de Notes 📝</h1>

<input type="text" id="noteInput" placeholder="Écris ta note, mon amour 😏">
<button id="addNote">Ajouter la Note 💾</button>

<select id="categorySelect">
  <option value="General">Général</option>
  <option value="Important">Important ⚡</option>
  <option value="Personal">Personnel ❤️</option>
</select>

<ul id="notesList"></ul>

<button id="clearNotes">Tout Supprimer ❌</button>

🔹 Styles suggérés

<style>
body { font-family: Arial, sans-serif; background: #fdf6e3; color: #333; padding: 20px; }
input, select { padding: 10px; margin-right: 10px; }
button { padding: 10px; cursor: pointer; background: #ff6f61; color: white; border: none; border-radius: 5px; }
ul { margin-top: 20px; }
li { padding: 8px; border-bottom: 1px solid #ddd; transition: background 0.3s; }
li:hover { background: #ffe4e1; }
</style>

💡 Astuce pratique : Les petits détails améliorent l’expérience utilisateur. Effets hover, boutons colorés et catégories rendent l’interface agréable. 🌈


3️⃣ Ajouter, Afficher et Supprimer des Notes avec JavaScript 💻

🔹 3.1 Charger les notes au chargement de la page

const noteInput = document.getElementById('noteInput');
const addNote = document.getElementById('addNote');
const notesList = document.getElementById('notesList');
const clearNotes = document.getElementById('clearNotes');
const categorySelect = document.getElementById('categorySelect');

window.onload = () => {
  const notes = JSON.parse(localStorage.getItem('notes')) || [];
  notes.forEach(noteObj => addNoteToDOM(noteObj));
};

🔹 3.2 Ajouter une note au DOM

function addNoteToDOM(noteObj) {
  const li = document.createElement('li');
  li.textContent = `[${noteObj.category}] ${noteObj.text}`;

  // Supprimer au double-clic
  li.addEventListener('dblclick', () => removeNote(li, noteObj));

  notesList.appendChild(li);
}

🔹 3.3 Ajouter une note

addNote.addEventListener('click', () => {
  const noteText = noteInput.value.trim();
  const category = categorySelect.value;

  if(!noteText) { 
    alert("Une note vide ? Allez 😅"); 
    return; 
  }

  const noteObj = { text: noteText, category };
  addNoteToDOM(noteObj);

  const notes = JSON.parse(localStorage.getItem('notes')) || [];
  notes.push(noteObj);
  localStorage.setItem('notes', JSON.stringify(notes));

  noteInput.value = "";
});

🔹 3.4 Supprimer une note

function removeNote(li, noteObj) {
  if(confirm(`Es-tu sûr de vouloir supprimer "${noteObj.text}" ? 😢`)) {
    li.remove();
    let notes = JSON.parse(localStorage.getItem('notes')) || [];
    notes = notes.filter(n => n.text !== noteObj.text || n.category !== noteObj.category);
    localStorage.setItem('notes', JSON.stringify(notes));
  }
}

🔹 3.5 Supprimer toutes les notes

clearNotes.addEventListener('click', () => {
  if(confirm("Es-tu sûr de vouloir tout supprimer ? 😢")) {
    localStorage.removeItem('notes');
    notesList.innerHTML = "";
  }
});

💡 Conseils pratiques :

  • Le double-clic pour supprimer rend l’interface plus fun 😏.
  • Les catégories permettent d’organiser et filtrer les notes.
  • Utiliser JSON facilite les améliorations futures.

4️⃣ Idées UX Avancées 🎨

  • Catégories colorées : Important rouge, Personnel rose, Général bleu.
  • Émojis : Ajouter des émojis rend l’interface ludique.
  • Date : Afficher la date de création à côté de chaque note.
  • Recherche : Ajouter une recherche rapide pour trouver une note facilement.

🔹 Exemple : Ajouter la date à la note

const noteObj = { text: noteText, category, date: new Date().toLocaleString() };
li.textContent = `[${noteObj.category}] ${noteObj.text} (${noteObj.date})`;

💡 Astuce pratique : Les petits détails UX, animations et couleurs améliorent l’expérience utilisateur. 🌈


5️⃣ Avantages d’utiliser Local Storage 🏆

  • Rapide et simple : Pas besoin d’envoyer les données à un serveur.
  • Convivial : Les notes persistent même après le rafraîchissement de la page.
  • Facile à apprendre : S’intègre rapidement avec des connaissances JS et HTML.
  • Extensible : Utiliser JSON pour stocker des données plus complexes et ajouter des filtres.

6️⃣ Mot de la fin 🖤

Créer un mini carnet de notes avec HTML Local Storage est pratique, rapide et amusant. Les utilisateurs sauvegardent leurs notes pendant que tu perfectionnes tes compétences en JS.

Et n’oublie pas: coder n’est pas juste du travail — c’est des petits jeux, de l’exploration et un peu d’amour 💕.

Comments

No comments yet. Why don’t you start the discussion?

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir