Partage
  • Partager sur Facebook
  • Partager sur Twitter

Besoin de précisions script drag & drop du cours

Anonyme
    21 novembre 2017 à 8:39:31

    Bonjour, 

    Je me suis lancé dans l'apprentissage du JavaScript via le cours "Dynamisez vos sites web avec JavaScript" et je suis au chapitre "Manipuler le CSS" dans lequel figure un exercice à la fin.

    Cet exercice consiste en un drag & drop très simple, mais j'aimerais avoir des précisions quant à certaines choses.

    (function() { // On utilise une IIFE pour ne pas polluer l'espace global
        var storage = {}; // Contient l'objet de la div en cours de déplacement
    
        function init() { // La fonction d'initialisation
            var elements = document.querySelectorAll('.draggableBox'),
                elementsLength = elements.length;
    
            for (var i = 0; i < elementsLength; i++) {
                elements[i].addEventListener('mousedown', function(e) { // Initialise le drag & drop
                    var s = storage;
                    s.target = e.target;
                    s.offsetX = e.clientX - s.target.offsetLeft;
                    s.offsetY = e.clientY - s.target.offsetTop;
                });
    
                elements[i].addEventListener('mouseup', function() { // Termine le drag & drop
                    storage = {};
                });
            }
    
            document.addEventListener('mousemove', function(e) { // Permet le suivi du drag & drop
                var target = storage.target;
    
                if (target) {
                    target.style.top = e.clientY - storage.offsetY + 'px';
                    target.style.left = e.clientX - storage.offsetX + 'px';
                }
            });
        }
    
        init(); // On initialise le code avec notre fonction toute prête.
    })();


    1. Quel est l'intérêt de créer la fonction init() dans l'IIFE étant donné qu'on souhaite qu'elle s'exécute immédiatement ?

    2. Quel est l'intérêt de créer une deuxième variable "s" (ligne 10) qui pointe vers le même objet que la variable "storage" ?

    -
    Edité par Anonyme 21 novembre 2017 à 8:47:06

    • Partager sur Facebook
    • Partager sur Twitter
      21 novembre 2017 à 16:22:38

      la variable s a son scope dans la fonction init()

      s pointe par référence vers storage, cependant n'est pas accessible en dehors de la fonction init()

      c'est tout ce que je sais, pour voir s'il y a un intérêt, efface la ligne 10 et remplace s par storage pour voir si le fonctionnement est affecté.

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        22 novembre 2017 à 7:59:05

        RefschoolYvon a écrit:

        la variable s a son scope dans la fonction init()

        s pointe par référence vers storage, cependant n'est pas accessible en dehors de la fonction init()

        c'est tout ce que je sais, pour voir s'il y a un intérêt, efface la ligne 10 et remplace s par storage pour voir si le fonctionnement est affecté.


        Bien justement, j'ai essayé sans et tout fonctionnement parfaitement bien.
        • Partager sur Facebook
        • Partager sur Twitter
          23 novembre 2017 à 16:18:15

          bon alors t'as raison de te poser la question, mais aucun code n'est parfait et justement sans doute là c'est un style plusqu'une nécessite ^^
          • Partager sur Facebook
          • Partager sur Twitter

          Besoin de précisions script drag & drop du cours

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown