🎭
SAE 301
  • CM Lancement
    • Introduction
    • Sujet
    • Livrable et Ă©valuation
    • Organisation
  • Tutos
    • JavaScript et LocalStorage
    • Cours sur la sĂ©curitĂ© Symfony
    • Gestion des mails dans Symfony
    • Webpack, CSS et JS dans Symfony
Propulsé par GitBook
Sur cette page
  • Travail Ă  faire
  • Stockage dans le localStorage
Exporter en PDF
  1. Tutos

JavaScript et LocalStorage

Comment afficher des données issues d'un tableau JavaScript en HTML

Le début de votre fichier JavaScript ressemblera à ceci :


const data = {
  "products": [
    {
      "id": 1,
      "name": "T-shirt",
      "price": 10,
      "quantity": 1,
      "image": "https://picsum.photos/200/300?random=1"
    },
    {
      "id": 2,
      "name": "Pantalon",
      "price": 20,
      "quantity": 2,
      "image": "https://picsum.photos/200/300?random=2"
    },
    {
      "id": 3,
      "name": "Chaussures",
      "price": 30,
      "quantity": 1,
      "image": "https://picsum.photos/200/300?random=3"
    }
  ]
}

document.addEventListener('DOMContentLoaded', () => {

    //Le dom est chargé,  votre code ici...
    
});

Le plus pratique est de donner un id à votre tableau de votre panier, et de récupérer cet élément dans votre code JavaScript.

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

Cette ligne devrait se trouver dans la partie tbody de votre tableau. On peut donc ajouter cette partie tbody Ă  notre tableau (s'il n'en contient pas encore)

  const tbody = document.createElement('tbody')
  panier.appendChild(tbody)

Ensuite, vous pouvez parcourir les produits (products) des données json, et ajouter une ligne par produit.

data.products.forEach(product => {
    //Ajouter une ligne au tableau
});

Il vous reste ensuite à définir le code HTML qui va être généré pour chaque ligne de produit, et l'ajouter à votre tableau.

const tr = document.createElement('tr');
tr.innerHTML = `
    <td>...vos données pour un produit ...</td>
`;
tbody.appendChild(tr);

Travail Ă  faire

  • Afficher les donnĂ©es dans votre page panier, Ă  partir des donnĂ©es json.

  • Ajoutez toutes les parties nĂ©cessaires (total, TVA, ...)

  • Alimentez ces zones (en JavaScript) avec les Ă©lĂ©ments de votre panier (calculĂ© le coĂ»t total du panier, la TVA (20%), ...)

  • Ajoutez tous les boutons et interactions nĂ©cessaires (supprimer un produit, modifier la quantitĂ©, ...)

  • Prenez le temps d'intĂ©grer correctement l'ensemble des Ă©lĂ©ments et d'ajouter une barre de menu.

  • Pensez Ă  l'ergonomie, l'accessibilitĂ© et l'UX de votre page

Pensez au formatage des données (dates, ...). Les fonctions JavaScript peuvent être très pratiques pour éviter de réécrire la même chose...

Stockage dans le localStorage

Actuellement, si vous actualisez votre page, tout est perdu. Ce n'est pas très pratique... Une solution simple consiste à stocker les informations dans le localStorage ou sessionStorage.

  • Les principales caractĂ©ristiques de localStorage sont les suivantes :

    • PartagĂ© entre tous les onglets et fenĂŞtres d’une mĂŞme origine.

    • Les donnĂ©es n’expirent pas. Il reste après le redĂ©marrage du navigateur et mĂŞme le redĂ©marrage du système d’exploitation.

  • L’objet sessionStorage est beaucoup moins utilisĂ© que localStorage.

    • Les propriĂ©tĂ©s et les mĂ©thodes sont les mĂŞmes, mais c’est beaucoup plus limitĂ© :

    • Le sessionStorage n’existe que dans l’onglet actuel du navigateur.

    • Un autre onglet avec la mĂŞme page aura un stockage diffĂ©rent.

    • Mais il est partagĂ© entre les iframes du mĂŞme onglet (en supposant qu’ils proviennent de la mĂŞme origine).

    • Les donnĂ©es survivent Ă  l’actualisation de la page, mais pas Ă  la fermeture/ouverture de l’onglet.

Nous allons utiliser localStorage pour stocker les produits du panier. Les méthodes principales sont :

  • setItem(key, value) – stocke la paire clĂ©/valeur.

  • getItem(key) – rĂ©cupère la valeur par clĂ©.

  • removeItem(key) – supprime la clĂ© avec sa valeur.

  • clear() – supprime tout.

  • key(index) – rĂ©cupère la clĂ© sur une position donnĂ©e.

  • length – le nombre d’élĂ©ments stockĂ©s.

PrécédentOrganisation

Dernière mise à jour il y a 1 an

Lire ici pour plus de détails :

https://fr.javascript.info/localstorage