Pages

l'opérateur &&

const myForEach = (tab, callback) => {
  for (let i = 0; i < tab.length; i++) {
    callback(tab[i], i, tab);
  }
};

const notes = [12, 7, 17, 5, 19];
// 👉 Si la note < 6 on met Ajourné

myForEach(notes, (n, i, t) => n < 7 && (t[i] = "AJ")); 

 

 Cas des objets

Le DOM

Calculer la moyenne d'un groupe avec des étudiants absents

📒 Selecteur = p

const students = document.querySelectorAll("p");

let sum = 0;
let count = 0;

for (const student of students) {
  const mark = Number(student.dataset.mark);

  if (!isNaN(mark)) {
    sum += mark;
    count++;
  }
}


const average = count
  ? (sum / count).toFixed(2)
  : "Aucune note";

const students = document.querySelectorAll("p");

let sum = 0;
let count = 0;

for (const student of students) {
  const mark = Number(student.dataset.mark);

  if (!isNaN(mark)) {
    sum += mark;
    count++;
  }
}


const average = count
  ? (sum / count).toFixed(2)
  : "Aucune note";

Choix d'un selecteur ! 

// utilisez le bon selecteur
const elements = document.querySelectorAll("[data-mark]");

let sum = 0;

for (const el of elements) {
    sum += Number(el.dataset.mark);
}

const average = sum / elements.length;

;



🤌🏼En action

See the Pen UsetherightSelector by dupont (@dupontcodepen) on CodePen.


En action : github

🥷🏼 En action (L2)

// 🥷🏼utilisation des méthodes en L2

const marks = [...document.querySelectorAll("[data-mark]")]
  .map(p => Number(p.dataset.mark));

const average =
  marks.length ? (marks.reduce((a, b) => a + b) / marks.length).toFixed(2) : "Aucune note";

See the Pen querySelector by dupont (@dupontcodepen) on CodePen

TD DOM

TD de base


Parcours de l'arbre : help

DOM : Start coding !

 

DOM de base

Fonctions de base à tester dans la console de http://dupontcours.free.fr/JavaScript/DOM-javascript/dom.html


🆒Sélectionnez tous les paragraphes

  1. const paragraphes = document.querySelectorAll("p");

Comptez le nombre de paragraphes

  1. const  paragraphes = document.querySelectorAll("p");
  2. console.log( paragraphes.length)

Une boucle sur la selection des paragraphes

  1. const  paragraphes = document.querySelectorAll("p");
  2. for (let p of  paragraphes) {
  3.         console.log(p.innerText.split(" ").length); // count words
  4. }

      1️⃣Ajouter une classe à tous les paragraphes

      1. const  paragraphes = document.querySelectorAll("p");
      2. for (let p of  paragraphes) {
      3.     p.classList.add("second");
      4. }

      🪛Ajoutez un événement click (voir amélioration par délégation)

      1. const paragraphes = document.querySelectorAll("p");
      2. for (let p of paragraphes ) {
      3.   p.addEventListener("click", () => {
      4.     p.classList.toggle("second");
      5.   });
      6. }

      🥇La délégation 

      1. const fun = function (event) {
      2.   const targetElement = event.target; // p or em

      3.   if (targetElement.closest("p")) {
      4.     let para = targetElement.closest("p");
      5.     para.classList.toggle("second");
      6.   }
      7. };

      8. const parent = document.querySelector("body");
      9. parent.addEventListener("click", fun, false);
      🥷Autres exemples de code à tester sur codePen.
      Somme des valeurs contenu dans l'attribut data-code
      1. let value = 0;
      2. for (let para of articles) {
      3.   value+= parseInt(para.dataset.code) // parseInt transforme la valeur en entier !
      4. }
      5. console.log(value)

      Affichez le résultat dans un div.
      1. let value = 0;
      2. for (let para of articles) {
      3.   value+= parseInt(para.dataset.code) // parseInt transforme la valeur en entier !
      4. }
      5. document.querySelector("div").innerText = value


      🔜 Pour la moyenne ! 
      1. const students = document.querySelectorAll("[data-mark]");

      2. const total = [...students].reduce(
      3.   (sum, el) => sum + Number(el.dataset.mark),
      4.   0
      5. );

      6. const average = (total / students.length).toFixed(2);

      7. document.querySelector(".msg").textContent += average;