Partage
  • Partager sur Facebook
  • Partager sur Twitter

Récupérer des éléments

    25 août 2016 à 14:47:57

    Bonjour,

    Je lis que les éléments (ou noeuds) fonctionne par héritage.

    Alors pourquoi ca ca ne marche pas :

    <!DOCTYPE html>
    
    <head>
        <meta charset='utf-8' />
    </head>
    
    <body>
        <p id='para'>Voici un nouveau paragraphe et <a href='#'>un lien</a></p>
    
        <script>
            alert(document.getElementById('para').a);
        </script>
    
    </body>

    Même alert(ducoment.body.p.a) ne marche pas.

    • Partager sur Facebook
    • Partager sur Twitter
      25 août 2016 à 15:30:04

      Parce que tu n'utilises pas le bon selecteur:

      document.getElementById("para").getElementsByTagName('a')[0];



      -
      Edité par bryan33000 25 août 2016 à 15:30:17

      • Partager sur Facebook
      • Partager sur Twitter
      Quand tu ne sais pas, Google reste ton meilleur ami ! ;)
        25 août 2016 à 15:59:04

        Lol

        Essayes de t'atteler à jQuery, c'est plus facile à comprendre et (je trouve) que c'est une bonne façon de commencer le js

        • Partager sur Facebook
        • Partager sur Twitter
        Quand tu ne sais pas, Google reste ton meilleur ami ! ;)
          25 août 2016 à 17:27:49

          Euh non, jQuery c'est le meilleur moyen de ne plus rien y comprendre. La syntaxe et la logique sont trop différents du JS natif. Et puis cette librairie perd de plus en plus son intérêt avec la normalisation des navigateurs, les nouvelles versions d'ECMAScript et de nouvelles pratiques de programmation plus flexibles.

          On est très en proie à ce genre d'erreur quand on apprend, parce qu'il y a un décalage entre ce qu'on pense avoir écrit et ce qu'on a écrit. Là tu demandes la propriété a de l'objet retourné par getElementById, qui est un élément HTML et qui n'a tout simplement pas cette propriété. les éléments HTML ont bien comme propriété un truc qui s'appelle childNodes et qui liste tous les noeuds enfants, mais il n'y a pas une propriété magique qui les recense par nom de balise, classe, id ou que sais-je. S'il existe des méthodes pour sélectionner des éléments avec ce genre de critère c'est bien parce que ça a un coût et qu' il faut le faire explicitement quand on en a besoin.

          En natif tu as tout à fait le droit d'utiliser un sélecteur CSS avec querySelector() (retourne le premier élément trouvé) et querySelectorAll() (retourne une NodeList statique). par exemple document.querySelectorAll(#para a); ou para.querySelectorAll("a") si tu as déjà sélectionné para avant.

          À noter qu'on ne peut pas boucler directement sur un résultat querySelectorAll avec forEach, comme on le ferait en jQuery, car ce n'est pas un array. par contre, comme ça se comporte comme un array on peut utiliser la syntaxe Array.prototype.forEach.call(taNodeList, taFonction). Perso je me suis fait une petite fonction car il m'arrive souvent de boucler sur des NodeList que j'utilise comme çaforEach(maNodeList, maFonction). On pourrait aussi ajouter cette fonction au prototype de NodeList pour pouvoir le faire directement, mais ça ne fonctionne pas avec d'anciennes versions d'IE donc il va falloir attendre encore un peu.

          • Partager sur Facebook
          • Partager sur Twitter
            25 août 2016 à 17:32:57

            C'est pour ça qu j'ai précisé "je trouve"

            Personnellement, le JS natif au début m'a fait vomir et c'est jQuery qui m'a grandement aidé à comprendre la logique. Après je t'accorde que la syntaxe est réellement différente, mais quand la logique est là, google est ton meilleur ami!

            Après je pense que tout le monde voit différemment les choses. Mais j'avoue que sans jQuery j'aurais vraiment eu du mal à me mettre au JS ne serait-ce qu'à cause des sélecteurs et des eventListeners qui ne sont pas du tout intuitifs (à mon sens) en natif...

            • Partager sur Facebook
            • Partager sur Twitter
            Quand tu ne sais pas, Google reste ton meilleur ami ! ;)
              25 août 2016 à 18:53:21

              Je sais bien que tu n'as émis qu'un avis mais quand je vois quelqu'un faire une erreur de compréhension du langage, je trouve que la dernière chose à lui dire c'est d'abandonner et d'apprendre jQuery. Il faut qu'il se prenne par la main et qu'il y arrive.

              Quand je reprends des projets jQuery j'ai presque besoin de me coller des claques pour me forcer à l'utiliser parce que son utilité est toute virtuelle et qu'un tiers des scripts que je lis font des choses complètement débiles avec parce que le dev ne comprenait pas ce qu'ils faisait.

              • Partager sur Facebook
              • Partager sur Twitter

              Récupérer des éléments

              × 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