Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/01/2011, 09h25   #1
Nouveau Membre du Club
 
Inscription : mars 2010
Messages : 82
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 82
Points : 27
Points : 27
Par défaut Erreur : cette variable est null

Bonjour,

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

Code :
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
chok371 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/01/2011, 11h18   #2
Membre chevronné
 
Homme Krusty
Inscription : mai 2009
Messages : 472
Détails du profil
Informations personnelles :
Nom : Homme Krusty
Localisation : France

Informations forums :
Inscription : mai 2009
Messages : 472
Points : 617
Points : 617
Code :
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);
 
}
__________________
programmer n'est pas connaitre tous les moindres détails d'un langage mais savoir exploiter sous toutes ses facettes ce que l'on connait.
mekal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/01/2011, 11h33   #3
Nouveau Membre du Club
 
Inscription : mars 2010
Messages : 82
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 82
Points : 27
Points : 27
Merci, mais il y a toujours la même erreur.
chok371 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/01/2011, 11h47   #4
Membre chevronné
 
Homme Krusty
Inscription : mai 2009
Messages : 472
Détails du profil
Informations personnelles :
Nom : Homme Krusty
Localisation : France

Informations forums :
Inscription : mai 2009
Messages : 472
Points : 617
Points : 617
il faudrait mettre une alert pour voir ce que retourne cibleImg.length

Code :
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);
 
}
__________________
programmer n'est pas connaitre tous les moindres détails d'un langage mais savoir exploiter sous toutes ses facettes ce que l'on connait.
mekal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/01/2011, 11h50   #5
Membre chevronné
 
Homme Krusty
Inscription : mai 2009
Messages : 472
Détails du profil
Informations personnelles :
Nom : Homme Krusty
Localisation : France

Informations forums :
Inscription : mai 2009
Messages : 472
Points : 617
Points : 617
et je vient de remarquer

il manque un s a getElementsByTagName

je sais pas pourquoi mais c'est frequent comme erreur
__________________
programmer n'est pas connaitre tous les moindres détails d'un langage mais savoir exploiter sous toutes ses facettes ce que l'on connait.
mekal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/01/2011, 12h16   #6
Nouveau Membre du Club
 
Inscription : mars 2010
Messages : 82
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 82
Points : 27
Points : 27
Le alert, bizarrement, ne marche pas.

J'ai mis le "s" et il y a toujours la même erreur.
chok371 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/01/2011, 12h25   #7
Membre chevronné
 
Homme Krusty
Inscription : mai 2009
Messages : 472
Détails du profil
Informations personnelles :
Nom : Homme Krusty
Localisation : France

Informations forums :
Inscription : mai 2009
Messages : 472
Points : 617
Points : 617
le probleme doit donc etre en amont

et une alert pour ciblediv sa donne quoi

Code :
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);
 
}
__________________
programmer n'est pas connaitre tous les moindres détails d'un langage mais savoir exploiter sous toutes ses facettes ce que l'on connait.
mekal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/01/2011, 12h41   #8
Nouveau Membre du Club
 
Inscription : mars 2010
Messages : 82
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 82
Points : 27
Points : 27
ça donne null
chok371 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/01/2011, 12h48   #9
Membre chevronné
 
Homme Krusty
Inscription : mai 2009
Messages : 472
Détails du profil
Informations personnelles :
Nom : Homme Krusty
Localisation : France

Informations forums :
Inscription : mai 2009
Messages : 472
Points : 617
Points : 617
il faut en conclure que document.getElementById("simpleBOX") n'existe pas

peut etre une erreur de syntaxe sur l'id
__________________
programmer n'est pas connaitre tous les moindres détails d'un langage mais savoir exploiter sous toutes ses facettes ce que l'on connait.
mekal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/01/2011, 14h35   #10
Nouveau Membre du Club
 
Inscription : mars 2010
Messages : 82
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 82
Points : 27
Points : 27
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.
chok371 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/01/2011, 14h47   #11
Rédacteur
 
Avatar de danielhagnoul
 
Homme Daniel Hagnoul
Étudiant perpétuel
Inscription : février 2009
Messages : 3 221
Détails du profil
Informations personnelles :
Nom : Homme Daniel Hagnoul
Âge : 61
Localisation : Belgique

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

Informations forums :
Inscription : février 2009
Messages : 3 221
Points : 6 767
Points : 6 767
Bonjour

Citation:
Envoyé par chok371 Voir le message
Non il y a bien un div id#simpleBox.
Code :
var cibleDiv = document.getElementById("simpleBOX");
simpleBOX n'est pas identique à simpleBox !
__________________

FAQ jQuery

Mon cahier d’exercices sur jQuery & Co

Si un message vous a aidé ou vous semble pertinent, votez pour lui !
danielhagnoul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/01/2011, 15h38   #12
Nouveau Membre du Club
 
Inscription : mars 2010
Messages : 82
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 82
Points : 27
Points : 27
Désolé j'ai pas été assez précis : dans ma div c'est bien simpleBOX :

Code :
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>
chok371 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/01/2011, 16h06   #13
Membre chevronné
 
Homme Krusty
Inscription : mai 2009
Messages : 472
Détails du profil
Informations personnelles :
Nom : Homme Krusty
Localisation : France

Informations forums :
Inscription : mai 2009
Messages : 472
Points : 617
Points : 617
finalement il y a beaucoup d'erreur

la fonction

Code :
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 :
1
2
 
<body onload='evenement()'>
__________________
programmer n'est pas connaitre tous les moindres détails d'un langage mais savoir exploiter sous toutes ses facettes ce que l'on connait.
mekal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/01/2011, 17h52   #14
Nouveau Membre du Club
 
Inscription : mars 2010
Messages : 82
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 82
Points : 27
Points : 27
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
chok371 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/01/2011, 18h16   #15
Membre chevronné
 
Homme Krusty
Inscription : mai 2009
Messages : 472
Détails du profil
Informations personnelles :
Nom : Homme Krusty
Localisation : France

Informations forums :
Inscription : mai 2009
Messages : 472
Points : 617
Points : 617
Citation:
- 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


Citation:
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
__________________
programmer n'est pas connaitre tous les moindres détails d'un langage mais savoir exploiter sous toutes ses facettes ce que l'on connait.
mekal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/01/2011, 18h21   #16
Nouveau Membre du Club
 
Inscription : mars 2010
Messages : 82
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 82
Points : 27
Points : 27
Citation:
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

Citation:
cibleDiv.getElementsByTagName("img") c'est un tableau qui contient une reference a chaque elements
Ok merci
chok371 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2011, 10h10   #17
Membre expérimenté
 
Duke Jikel
Inscription : mai 2010
Messages : 339
Détails du profil
Informations personnelles :
Nom : Duke Jikel

Informations forums :
Inscription : mai 2010
Messages : 339
Points : 546
Points : 546
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
dukej est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h20.


 
 
 
 
Partenaires

Hébergement Web