Pages

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 articles = document.querySelectorAll("p");

Comptez le nombre de paragraphes

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

Une boucle sur la selection des paragraphes

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

      1️⃣Ajouter une classe à tous les paragraphes

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

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

      1. const articles = document.querySelectorAll("p");
      2. for (let para of articles) {
      3.   para.addEventListener("click", () => {
      4.     para.classList.add("selected");
      5.   });
      6. }
      🥷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

      🥇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("selected");
      6.   }
      7. };

      8. const parent = document.querySelector(".container");
      9. parent.addEventListener("click", fun, false);

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

      Js à fond la forme

      On s’intéresse à un algorithme récursif qui permet de rendre la monnaie à partir d’une liste donnée de valeurs de pièces et de billets.

      Le système monétaire est donné sous forme d’un tableau de données const pieces = [100, 50, 20, 10, 5, 2, 1]. On supposera qu’il n’y a pas de limitation quant à leur nombre.

      On cherche à donner le tableau de pièces à rendre pour une somme donnée en argument. le tableau de pièce est donné en second argument. Le troisième paramétre et l'index sur le tableau pieces.

      Donnez la fonction rendu_glouton qui implémente cet algorithme et renvoie le tableau des pièces à rendre.

      Exemples des appels récursifs

      legende : ▲reste sur la même pièce, ▶ change de pièce.
      rendu_glouton(68, [ ], 0)
      [50, 10, 5, 2, 1]
      Voici la liste des appels
      100€ rendu_glouton(68, [], 0)
      50€ ▶ rendu_glouton(68, [], 1)
      50€ ▶ ▲ rendu_glouton(18, [50], 1)
      20€ ▶ ▲ ▶ rendu_glouton(18, [50], 2)
      10€ ▶ ▲ ▶ ▶ rendu_glouton(18, [50], 3)
      10€ ▶ ▲ ▶ ▶ ▲ rendu_glouton(8, [50,10], 3)
      5€ ▶ ▲ ▶ ▶ ▲ ▶ rendu_glouton(8, [50,10], 4)
      5€ ▶ ▲ ▶ ▶ ▲ ▶ ▲ rendu_glouton(3, [50,10,5], 4)
      2€ ▶ ▲ ▶ ▶ ▲ ▶ ▲ ▶ rendu_glouton(3, [50,10,5], 5)
      2€ ▶ ▲ ▶ ▶ ▲ ▶ ▲ ▶ ▲ rendu_glouton(1, [50,10,5,2], 5)
      1€ ▶ ▲ ▶ ▶ ▲ ▶ ▲ ▶ ▲ ▶ rendu_glouton(1, [50,10,5,2], 6)
      1€ ▶ ▲ ▶ ▶ ▲ ▶ ▲ ▶ ▲ ▶ ▲ rendu_glouton(0, [50,10,5,2,1], 6)
      ✕ FIN ✕

      rendu_glouton(300, [ ], 0)
      [100, 100, 100]
      Voici la liste des appels
      > rendu_glouton(300, [], 0: 100€ )
      100€ rendu_glouton(300, [], 0)
      100€ ▲ rendu_glouton(200, [100], 0)
      100€ ▲ ▲ rendu_glouton(100, [100,100], 0)
      100€ ▲ ▲ ▲ rendu_glouton(0, [100,100,100], 0)
      ✕ FIN ✕

      le troisième paramétre correspond à l'indice de recherche dans le tableau des pieces. 

      Fixant sa valeur à 0, c'est en cela que l'algorithme est glouton, on recherche le plus gros billet à rendre à chaque itération. Ainsi rendre 100€ c'est 1 billet de 100 et pas 2 billets de 50 ou 10 billets de 10.


      JS :

       La fonction recherche prend en paramètres deux chaines de caractères gene et seq_adn et renvoie True si on retrouve gene dans seq_adn et False sinon. 

      Compléter le code JS ci-dessous pour qu’il implémente la fonction recherche.

      const recherche = function (gene, seq_adn){
          const n = seq_adn.length;
          const g = gene.length;
          let trouve = false;
          let i = ❓
      
          while (i < 🚧 && trouve == 🔧){
              let j = 0;
              while (j < g && gene[j] == seq_adn[i+j]){
                  ⚙️
              }
              if (j == g ){
                      trouve = true
              }
              😍
          }
          return trouve
      }
      
      
      console.log(recherche("AATC", "GTACAAATCTTGCC"));
      console.log(recherche("AGTC", "AAGTCGCC"))
      Donnez les valeurs de 😍⚙️🔧🚧❓

      Last call

       



      Plan

      1. Définition des variables et fonctions.
      2. DOM
      3. 🚧Interaction 🚧
      4. Améliorations


      https://github.com/dupontdenis/calculette.git



      Plan

      1. Définition des variables et fonctions.
      2. 🚧 DOM 🚧
      3. Interaction
      4. Améliorations
      5. Objet
      6. Design Pattern

      Training JS

      🚧  Exercices JS


      Evaluer surprise ! 

      const action = function (tab) {

        let i = 0
          , j = tab.length - 1;
        while (i < j) {
          if (tab[i] <= 0) {
            i++
          }
          else {
            let tmp = tab[i];
            tab[i] = tab[j];
            tab[j] = tmp;
            // [tab[j], tab[i]] = [tab[i], tab[j]]
            j--
          }
        }

        return tab
      }

      const surprise = action([-1, 1, -2, 10, 3])
      console.table(surprise)

      DS

      Selecteurs lien


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

      See the Pen Grid by Example 12: No clearing required by dupont (@dupontcodepen) on CodePen.



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



      See the Pen DS grid 2 by dupont (@dupontcodepen) on CodePen.

      Salle

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

      JS : exercice

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

      CSS style

      Un peu de style pour le fun !



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

      Découvrir la force de JS

       Etude de cas !


      Projet : calculette

      Interface : le tableau de bord



      Fonctionnalité : le moteur


       Retour à notre calculette ! 


      Interface : une grille


      Fonctionnalité :




      🆘Recherchez la logique à implémenter.

      20 exercices de JS pour se former

      Exercices JS

      Plan du cours

       



      Plan

      1. Définition des variables et fonctions.
      2. DOM
      3. Interaction
      4. Améliorations
      5. Objet
      6. Design Pattern

      Correction code HTML/CSS : Calculette

      Correction lien

      Code

      Au moins 5 codes différents de HTML/CSS de la calculette 🧮 vous sont proposés ici : 



      Plan du cours

      📢 L'aventure va continuer avec les différentes étapes de la mise en place de l'interface utilisateur.



      Introduction Javascript

       

      Grid : calculette


      Donnez le HTML/CSS

         

      Correction du DM grid

       Voici le lien sur GITHUB

      https://github.com/dupontdenis/Grid-Video.git


      Pour cloner ce code aidez vous de l'article : https://dupontl1.blogspot.com/2023/03/clonez-du-code.html



      See the Pen Gallerie Vidéos by dupont (@dupontcodepen) on CodePen.

      Clonez du code

       

      Prérequis

      Vous avez installé Git sur votre machine. Git

      Exemple d'utilisation de GIT/GITHUB

      Nous voulons récupérer le code d'un projet

      ↠ Le code est déposé sur un site en cloud : GitHub !


      Nous allons voir comment cloner le code de l'application !


      Rendez vous à l'adresse : https://github.com/dupontdenis/HTML_TD3

      Dans la fenêtre, repérez tout de suite l'onglet Code▾

      Nous pouvons copier/coller le code en cliquant sur le bouton


      Mais, nous allons utiliser une méthode géniale qui permet de récupérer directement dans VStudio l'ensemble de la structure et le code associé. Il nous faut pour cela installer git et pensez à créer un compte sur gitHub.

      Installer git sur votre machine

      lien : Git


      Vous pouvez suivre une aide pour mettre en place git sur votre machine. 

      J'ai rédigé une aide rapide ( lien ).


      Télécharger le document depuis VS.

      Nous allons télécharger directement depuis VS les fichiers. Je vous ai rédigé une documentation rapide ( lien )

      Voici les différentes étapes sous forme de capture d'écran.

      1) cliquez sur le code

      2) copier le lien 

      Lancez Visual Studio Code.

      Si VS se lance dans un dossier, commencez par le fermer file->close Folder


      Cliquez sur le bouton source control


      Cliquez sur Clone Repository (clonez un dépôt)


      Mettre l'adresse sélectionnée https://github.com/dupontdenis/HTML_TD3.git


      Sélectionnez un dossier existant ou créez un répertoire.

      La figure suivante montre comment créer un nouveau répertoire.

      souris bouton de droite Nouveau->Dossier


      Donnez le nom que vous voulez, par exemple TDHTML


      Cliquez sur Select Repository Location


      Les documents se chargent automatiquement puis cliquez sur

      Les documents apparaissent dans l'exploreur des fichiers.


      Workshop Microsoft

       Nous avons mis en place un workshop pour illustrer la mise en ligne de votre CV

      Exemple

      https://dupontdenis.github.io/CV/

      Suivez le guide

      Create a resume website in the Browser using HTML, CSS, github.dev, and GitHub Pages

      👉 https://github.com/ornelladotcom/resume-website-workshop 👈


      ⇉ 

      Le passage de VStudio à GitHub se fait en un clic !

      Illustration :

      Le déployement se fait en un clic !

      Illustration :



      Inspection montre l'utilisation d'une grille CSS.







      Git

       Nous allons utiliser git pour charger/publier un dépôt.

      Etudiez ces vidéos.

        





      TD : grid

       Création de la figure suivante.


      DM : 👾 trouvez un bug

      Vous connaisez déjà ce fichier de Test (lien)

      Voici un ensemble de selecteurs qui encadrent le second div.

      sélecteur

      Test

      div { border:1px solid;}

      div:first-child {border:1px solid;}

      div + div { border:1px solid;}

      div:nth-child(2) {border:1px solid;}

      ...

      👿  BUG ! 

      Tout semble parfait, mais le selecteur div:last-child  {border:1px solid;} devrait lui aussi selectionner le second DIV.

      div:last-child  {border:1px solid;}

      😡😡😡

      Il n'en ai rien. Trouvez l'explication à ce comportement.

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

      Verifier votre hypothèse avec ce selecteur !

      div:not(div:last-child) {border:1px solid;}