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 :

Erreur : cette variable est null


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 82
    Par défaut Erreur : cette variable est null
    Bonjour,

    J'essaie d'accéder aux images de la div #simpleBOX :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var cibleDiv = document.getElementById("simpleBOX");
    var cibleImg = cibleDiv.getElementByTagName("img");
     
    cibleImg.addEventListener(click, openBOX, false);
    Mais dans firebug j'ai un message d'erreur, il me dit qu'au niveau de la deuxième ligne, cibleDiv is null

  2. #2
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var cibleDiv = document.getElementById("simpleBOX");
     
    var cibleImg = cibleDiv.getElementByTagName("img");
     
     for (var i = 0; i<= cibleImg.length; i++){
    cibleImg[i].addEventListener(click, openBOX, false);
     
    }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 82
    Par défaut
    Merci, mais il y a toujours la même erreur.

  4. #4
    Invité
    Invité(e)
    Par défaut
    il faudrait mettre une alert pour voir ce que retourne cibleImg.length

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var cibleDiv = document.getElementById("simpleBOX");
     
    var cibleImg = cibleDiv.getElementByTagName("img");
    alert(cibleImg.length)
     for (var i = 0; i<= cibleImg.length; i++){
    cibleImg[i].addEventListener(click, openBOX, false);
     
    }

  5. #5
    Invité
    Invité(e)
    Par défaut
    et je vient de remarquer

    il manque un s a getElementsByTagName

    je sais pas pourquoi mais c'est frequent comme erreur

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 82
    Par défaut
    Le alert, bizarrement, ne marche pas.

    J'ai mis le "s" et il y a toujours la même erreur.

  7. #7
    Invité
    Invité(e)
    Par défaut
    le probleme doit donc etre en amont

    et une alert pour ciblediv sa donne quoi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    var cibleDiv = document.getElementById("simpleBOX");
     alert( cibleDiv)
    var cibleImg = cibleDiv.getElementByTagName("img");
     
     for (var i = 0; i<= cibleImg.length; i++){
    cibleImg[i].addEventListener(click, openBOX, false);
     
    }

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 82
    Par défaut
    ça donne null

  9. #9
    Invité
    Invité(e)
    Par défaut
    il faut en conclure que document.getElementById("simpleBOX") n'existe pas

    peut etre une erreur de syntaxe sur l'id

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 82
    Par défaut
    Non il y a bien un div id#simpleBox.

    Voici le script complet : http://dl.free.fr/r8HzN43Bp

    Peut-être que tu trouveras mieux l'erreur.

  11. #11
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonjour

    Citation Envoyé par chok371 Voir le message
    Non il y a bien un div id#simpleBox.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var cibleDiv = document.getElementById("simpleBOX");
    simpleBOX n'est pas identique à simpleBox !

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 82
    Par défaut
    Désolé j'ai pas été assez précis : dans ma div c'est bien simpleBOX :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <div id="simpleBOX">
    	<img src="img/img-simpleBOX/small/desert.jpg" width="200" height="200" alt="Désert" /> 
    	<img src="img/img-simpleBOX/small/meduse.jpg" width="200" height="200" alt="Méduse" />
    	<img src="img/img-simpleBOX/small/koala.jpg" width="200" height="200" alt="Koala" />
    	<img src="img/img-simpleBOX/small/fleur.jpg" width="200" height="200" alt="Fleur" />
    </div>

  13. #13
    Invité
    Invité(e)
    Par défaut
    finalement il y a beaucoup d'erreur

    la fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    function evenement() {
    var cibleDiv = document.getElementById("simpleBOX");
    var cibleImg = cibleDiv.getElementsByTagName("img");
     
     for (var i = 0; i<= cibleImg.length; i++){
    cibleImg[i].addEventListener('click', openBOX, false);
     
    }
     
    }
     
    function openBOX(small, original) {
     
    alert('coucou')
     
    }

    dans le fichier html rajoute l'appel a la fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <body onload='evenement()'>

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 82
    Par défaut
    Merci, cette fois ça marche.

    Mais j'aimerais avoir un peu plus d'infos sur mes erreurs, car je trouve ton code un peu obscur, et ça pourrait m'aider à progresser :

    - Pourquoi mettre le tout dans une fonction "evenement()" chargée par le body ?

    - Pareil pour le boucle for, est ce qu'elle est obligatoire ?

    Encore merci

  15. #15
    Invité
    Invité(e)
    Par défaut
    - Pourquoi mettre le tout dans une fonction "evenement()" chargée par le body ?
    pour etre certain que la page est completement charge il faut lancer la fonction avec l'evenement onload afin de pouvoitr faire les traitement sur les elements de la pge


    Pareil pour le boucle for, est ce qu'elle est obligatoire
    la boucle sert a parcourir chaque elements

    cibleDiv.getElementsByTagName("img") c'est un tableau qui contient une reference a chaque elements

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 82
    Par défaut
    pour etre certain que la page est completement charge il faut lancer la fonction avec l'evenement onload afin de pouvoitr faire les traitement sur les elements de la pge
    Ok c'est donc toujours obligatoire ? car perso j'ai déjà vu des scripts fonctionnés sans cette technique

    cibleDiv.getElementsByTagName("img") c'est un tableau qui contient une reference a chaque elements
    Ok merci

  17. #17
    Inactif  

    Profil pro
    Inscrit en
    Mai 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 345
    Par défaut
    devrait s'écrire :
    car sinon on essaye d'accéder à l'élément cibleImg[cibleImg.length] sachant que le dernier élément d'un tableau est cibleImg.length-1, il faut utiliser la condition strictement inférieur, et non inférieur ou égal

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 26/08/2015, 16h06
  2. Pourquoi cette variable est-elle vide ?
    Par yann18 dans le forum Langage
    Réponses: 2
    Dernier message: 14/03/2008, 10h36
  3. [XSLT] Teste si une variable est nulle
    Par kkwet30 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 08/02/2008, 20h50
  4. Réponses: 2
    Dernier message: 31/07/2007, 15h53

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