IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Objet appelé automatiquement et pourtant indiqué indefini


Sujet :

JavaScript

  1. #1
    Membre émérite
    Avatar de Nothus
    Homme Profil pro
    aucun
    Inscrit en
    Juillet 2009
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : aucun
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 200
    Points : 2 575
    Points
    2 575
    Billets dans le blog
    27
    Par défaut Objet appelé automatiquement et pourtant indiqué indefini
    Bonjour,

    Plutôt qu'un long discours, voici quelques lignes de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var t = document.getElementsByTagName("div"); 
    for (var i=0; i<t.length; i++) { 
    	if (t[i].id!="") 
    		alert(document.getElementById[t[i].id]); 
    }
    Pour une raison qui m'échappe complètement, il m'indique que des objets indéfinis... ce qui sur le papier ne devrait pas être possible, vu qu'ils ne sont demandés que par leur propre existence

    Cette boucle vient tester une partie de script qui ne fonctionne pas, et qui est en charge de créer le gabarit d'une page. Les éléments sont créés (j'ai vérifié leur existence avec l'outil de débug de Firefox). Du coup je m'interroge vraiment sur l'ensemble, mais tout mon problème réside ici : résoudre ce mystère, c'est résoudre in fine le reste.

    Concrètement qu'est-ce qui peut expliquer un tel comportement ??

    D'avance merci beaucoup.
    "En dehors des langages de la famille LISP et du modèle RDF, point de salut."

  2. #2
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    j'essais de comprendre
    tu fais un tableau qui contient une référence à tous les div
    puis tu parcours ce tableau
    pour chaque div du tableau tu récupère l'id du div
    puis tu recherche dans le dom le div qui porte cet id

    heu à quoi ça sert ? vu que tu l'a déjà le div
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var t = document.getElementsByTagName("div"); 
    for (var i=0; i<t.length; i++) { 
    	if (t[i].id!="") 
    		alert([t[i].id); 
    }
    bon si tu tien à utiliser getElementById il suffit d'éviter les erreurs de siyntaxe il s'agit d'une fonction pas d'un tableau l'élément document.getElementById[0] n'existe pas vu que ce n'est pas un tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    var t = document.getElementsByTagName("div"); 
    for (var i=0; i<t.length; i++) { 
    	if (t[i].id!="")  {
    		alert(document.getElementById(t[i].id)); 
    		alert (document.getElementById(t[i].id) == t[i]); // true
           }
    }
    A+JYT

  3. #3
    Membre émérite
    Avatar de Nothus
    Homme Profil pro
    aucun
    Inscrit en
    Juillet 2009
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : aucun
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 200
    Points : 2 575
    Points
    2 575
    Billets dans le blog
    27
    Par défaut
    Merci de ta réponse !

    Citation Envoyé par sekaijin Voir le message
    j'essais de comprendre
    tu fais un tableau qui contient une référence à tous les div
    puis tu parcours ce tableau
    pour chaque div du tableau tu récupère l'id du div
    puis tu recherche dans le dom le div qui porte cet id

    heu à quoi ça sert ? vu que tu l'a déjà le div
    A rien, et effectivement mon explication initale est confuse. Je crée avec Javascript l'ensemble des éléments d'une page, suivant un gabarit défini. Jusque là ok : je vois mes éléments. Je continue et je code ce qu'il faut pour les remplir. Tout va toujours bien. SAUF pour deux éléments, qui existent pourtant bien (je les vois sur la page, je les ai dans le code source généré).

    Du coup je teste l'existence de ces deux div. Et là surprise : il me dit qu'elles n'existent pas ! Alors je teste TOUTES les div, d'où ces quelques lignes qui ne servent à rien. Et aucune n'existe. Aucune. Pourtant la page est générée, affichée...
    "En dehors des langages de la famille LISP et du modèle RDF, point de salut."

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    document.getElementById[t[i].id]
    . ???

  5. #5
    Membre émérite
    Avatar de Nothus
    Homme Profil pro
    aucun
    Inscrit en
    Juillet 2009
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : aucun
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 200
    Points : 2 575
    Points
    2 575
    Billets dans le blog
    27
    Par défaut
    Citation Envoyé par sekaijin Voir le message
    bon si tu tien à utiliser getElementById il suffit d'éviter les erreurs de siyntaxe il s'agit d'une fonction pas d'un tableau l'élément document.getElementById[0] n'existe pas vu que ce n'est pas un tableau
    Très juste, cependant le reste de mon code est correct (et se compose principalement de fonctions génériques).
    "En dehors des langages de la famille LISP et du modèle RDF, point de salut."

  6. #6
    Membre actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 119
    Points : 203
    Points
    203
    Billets dans le blog
    1
    Par défaut
    Salut



    quelque chose comme ca t aurait aide peut etre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    console.log(document.querySelectorAll("div:not([id=''])"))

  7. #7
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut
    un bon moyen de contrôler si un élément du DOM à une certaine propriété : https://developer.mozilla.org/fr/doc...hasOwnProperty
    Conception / Dev

  8. #8
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Salut,
    bon allez j'enfonce des portes overtes : as-tu vérifié que le DOM est prêt quand ton script s'exécute ?

    Sinon, une petite variation du querySelectorAll de Lakhdr :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    console.log(document.querySelectorAll('[id]'));
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  9. #9
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Comme l'a remonté NoSmoking, je crois qu'il a confusion entre crochets et parenthèses
    One Web to rule them all

Discussions similaires

  1. Connaitre l'objet appelant
    Par aurelien94 dans le forum Langage
    Réponses: 5
    Dernier message: 19/10/2006, 11h51
  2. [objet] appeler une méthode d'objets contenus dans un tableau (iterator ?)
    Par psychomatt dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 21/09/2006, 16h28
  3. Réponses: 6
    Dernier message: 12/06/2006, 20h03
  4. Réponses: 4
    Dernier message: 01/07/2004, 19h15
  5. base de données objet appelée ozone
    Par enti dans le forum Autres SGBD
    Réponses: 3
    Dernier message: 01/03/2004, 08h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo