Bonjour,
Je rencontre un phénomène assez particulier et j'aurais aimé savoir si d'après vous il est logique, et pourquoi.
En simplifiant, je commence donc par obtenir plusieurs images contenues dans un block "div", j'effectue une boucle pour initialiser quelques propriétés et appliquer les événement "onmouseover" et "onmouseout a chacune de mes images".
Lorsque qu'un événement se déclenche, j'appelle une autre fonction en passant l'id de l'objet en paramètre.
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
18
19
20
21
22
23
24 function _Init() { var i,n; var pics = document.getElementById('blockImages').getElementsByTagName('img'); n = pics.length; for(i = 0; i<n; i++) { with (pics[i]) { id = 'pic' + i; style.display = 'none'; onmouseover = function() { // code lorsque la sourie arrive dessus } onmouseout = function() { // code lorsque la sourie repart } } } }
Ainsi pour récupéré l'objet en question par exemple, plutôt que d'utiliser la méthode "document.getElementById(objID)" a chaque fois, j'ai préféré préalablement faire ceci :
J'obtiens donc cela :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 pics[pics[i].id] = pics[i]; delete pics[i]
A ce moment la, j'obtiens une erreur avec IE6 par exemple, et je me rends compte que si j'enlève le petit morceau de code que j'avais préalablement rajouter
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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 function _Init() { var i,n; var pics = document.getElementById('blockImages').getElementsByTagName('img'); n = pics.length; for(i = 0; i<n; i++) { with (pics[i]) { id = 'pic' + i; style.display = 'none'; onmouseover = function() { // code lorsque la sourie arrive dessus mafonction(this.id) } onmouseout = function() { // code lorsque la sourie repart mafonction(this.id) } } pics[pics[i].id] = pics[i]; delete pics[i]; } var mafonction = function(objID) { var monObjet = pics[objID]; }; }Tout fonctionne parfaitement, dans le sens ou a partir du moment ou j'initialise l'id de l'objet, mon tableau "pics[objID]" renvois bien mon objet... pourquoi ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 pics[pics[i].id] = pics[i]; delete pics[i];
Merci d'avance pour l'éclaircissement de ce sujet.
Partager