Phénomène etrange avec la propriété "id" d'un objet
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:
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:
1 2
| pics[pics[i].id] = pics[i];
delete pics[i] |
J'obtiens donc cela :
Code:
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:
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.