Partage
  • Partager sur Facebook
  • Partager sur Twitter

JavaScript Object Issues

Sujet résolu
    27 août 2016 à 14:44:42

    Bonjour,

    J'aimerai savoir pourquoi le code suivant me donne l'erreur: 

    Cannot set property 'top' of undefined, car ma console.log me donne bien un élément selected. Je ne comprends plus. Et quand je passe par jQuery $('#slide0'), ça marche... Bref, je galère dans la logique là.

    var carrousel = {
        nbSlide: 0,
        nbCurrent: 1,
        nbSlideShown: 3,
        elemCurrent: null,
        elem: null,
        first: null,
        second: null,
        third: null,
        
        init: function(elem){
            this.nbSlide = elem.find(".flux").length;
            
            // Initialisation du Carrousel
            this.elem = elem;
            elem.find('.flux').hide();
            this.first = $('#slide0');
            this.first.show();
            this.second = elem.find('.flux:eq(1)');
            this.second.show();
            this.third = elem.find('.flux:eq(2)');
            this.third.show();
            this.elemCurrent = elem.find('.flux:first');
            this.positionFirst(this.first);
        },
        
        goToSlide: function(num){
            this.elemCurrent.fadeOut();
            this.elem.find('.flux:eq('+num-1+'').fadeIn();
            this.nbCurrent = num;
            this.elemCurrent = this.elem.find('.slide:eq('+num-1+'');
        },
        positionFirst: function(id){
            console.log(id);
            id.style.top = '200px';
        }
    };
    
    $(function(){
       carrousel.init($("#carrousel")); 
    });

    Si vous pouvez m'aider

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      27 août 2016 à 15:09:08

      Mélanger jQuery et JavaScript natif est une mauvaise pratique.

      -
      Edité par Anonyme 27 août 2016 à 15:09:24

      • Partager sur Facebook
      • Partager sur Twitter
        27 août 2016 à 18:52:32

        je te recommande de toujours ajouter le signe $ dans tes noms de variable et propriétés quand il 'agit d'un objet jQuery, ce qui te permettra de te rendre compte quand tu utilises une méthode jQuery sur un élément normal ou une méthode normale sur un élément jQuery.

        Tu remplacerais par exemple elem par $elem et this.first par this.$first

        Aussi, si tu nommais correctement tes variables tu ferais moins d'erreur. Un id ne devrait pas avoir de propriété style par exemple : un id ça doit juste être une chaîne de caractères, donc dans ta fonction positionFirst tu devrais appeler ton paramètre $first (au moins on sait de quoi il s'agit) ou ne pas en mettre du tout vu que tu fais référence à this.first.

        Enfin, là on ne comprend vraiment pas l'intérêt de la syntaxe objet parce que tu ne bénéficie pas des avantages d'un objet. Tu ne peux avoir qu'une instance par exemple. Créer une simple fonction avec une closure aurait été beaucoup plus simple, et tu aurais eu tes variables locales.

        Si non Tyrion, je trouve ta remarque complètement creuse. Ça n'aide personne et en plus c'est assez tarte : c'est jQuery qui est une mauvaise pratique ;)

        • Partager sur Facebook
        • Partager sur Twitter
          27 août 2016 à 20:59:55

          Je prends note. 
          Merci beaucoup pour la clarification.
          • Partager sur Facebook
          • Partager sur Twitter

          JavaScript Object Issues

          × 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