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".

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       
      }               
    }               
  }
}
Lorsque qu'un événement se déclenche, j'appelle une autre fonction en passant l'id de l'objet en paramètre.
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
pics[pics[i].id] = pics[i];
delete pics[i]
J'obtiens donc cela :
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];            
  };
 
}
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
pics[pics[i].id] = pics[i]; 
delete pics[i];
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 ?

Merci d'avance pour l'éclaircissement de ce sujet.