11550 sujets

JavaScript, DOM et API Web HTML5

Bonsoir à tous,

Décidément je suis confronté à pas mal de problèmes sur mon projet, mais je pense que celui-ci est l'un qui me fait le plus mal à la tête...

En fait je cherche à définir dynamiquement des événements pour plusieurs images.
Pour cela, j'exploite un fichier xml qui contient les infos sur les événements.

Voici un bout de code pour illustrer mes propos Smiley ravi

    for (i=0;i<3;i++)
    {
      var currentProject = this.docXML.getElementsByTagName("projet").item(i);
      var srcVignette = currentProject.getElementsByTagName("imageMiniature").item(0);
      
      var prechargementImageHover = document.createElement('img');
          prechargementImageHover.src = srcVignette.getAttribute('srcHover');
          
      var currentVignette = document.getElementById(currentProject.getAttribute('id'));
          currentVignette.onmouseover = function() {this.src=srcVignette.getAttribute('srcHover')};
          currentVignette.onmouseout = function() {this.src=srcVignette.getAttribute('src')};
          currentVignette.parentNode.onclick = function() {navAjax.modifierAncre('creations>'+currentProject.getAttribute('id')); return false;};
    }


Le problème c'est que toutes mes images recoivent les mêmes paramètres (ceux de la dernière boucle).

J'espère avoir été clair.

En vous remerciant grandement pour l'aide que vous pourrez m'apporter,

Dark.

[EDIT]Problème réglé après avoir passé la journée à chercher!!!!!!!!!!
Je vous poste le nouveau code pour que cette solution puisse servir à d'autres...

    for (i=0;i<3;i++)
    {
      var currentProject = this.docXML.getElementsByTagName("projet").item(i);
      var srcVignette = currentProject.getElementsByTagName("imageMiniature").item(0);
      
      var prechargementImageHover = document.createElement('img');
          prechargementImageHover.src = srcVignette.getAttribute('srcHover');
          
      var currentVignette = document.getElementById(currentProject.getAttribute('id'));
          currentVignette.srcHover = srcVignette.getAttribute('srcHover');
          currentVignette.srcNormal = srcVignette.getAttribute('src');
          currentVignette.link = currentProject.getAttribute('id');
          currentVignette.onmouseover = function() {this.src=this.srcHover};
          currentVignette.onmouseout = function() {this.src=this.srcNormal};
          currentVignette.parentNode.onclick = function() {navAjax.modifierAncre('creations>'+this.firstChild.link); return false;};
    }

Modifié par Dark$hadow (07 Feb 2009 - 22:15)