Passage de valeur bisard.

Résolu
BEAUBRIUS Messages postés 120 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 8 février 2008 - 11 oct. 2007 à 22:26
BEAUBRIUS Messages postés 120 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 8 février 2008 - 12 oct. 2007 à 13:51
Bonjour
Alors je vous explique un peu mon probleme.

pour commencer , j'ai une liste d'element qui est generer avec un xml genere sur le serveur.
ma liste d'element est de la forme suivante :

valeur de l'element

avec i qui varie de 0 a n-1 ( n etant le nombre total d'element )

mon but est que lorsque je click sur un element il se met en etant selectionner (class="select" )
par defaut l'element 0 est selectionner
et que si il y a un element qui etait deja selectionner il soit deselectionner (class="")

donc j'ai fait un evenement onclick sur chaque div qui contien les element
l'evenement apelle une fonction selected( element a selectionner , ensien element selectionner , nombre d'element )

est c'est la que commence les probleme ...
 
 function selected(i,select,taille){
        // je selection et deselection les element
        document.getElementById("select"+select).className = "";
        document.getElementById("select"+i).className = "select";
        //alert(i);
        var j;
        // je change les valeur passer car l'element selectioner a changer
        for(j=0;j<taille;j++){
            document.getElementById("select"+j).onclick= function(){ selected(j,i,taille);};
        }
    }

donc lorsque je click sur un element ça marche bien , le changement a bien lieu.
par contre quand je click a nouveau il y a un probleme.
et j'ai remarquer que le probleme vien lors du changement de l'evenement onclick.
si je decomente alert(i); ça m'affiche la ligne sur la quel on a clicker.
la premier foi ça marche bien , mais la deuxieme foi il me dit taille quelque soit la ligne sur la quel je click.

exemple :
*[bonbon]
  [gateau]
  [fruit]

je click sur gateau :

j'ai une alert avec 1
  [bonbon]
*[gateau]

  [fruit]

je click sur bonbon

j'ai une alert avec 3
erreur imposible de selectionner la ligne 3 (elle n'existe pas ... )

je pense que dans le changement d'evenement j est passé par reference et non par valeur
car a la fin de l'execution de la fonction j vaut taille (vu qu'on est sortie de la boucle for)

esque quelqu'un pourai m'aidé ?

Merci

2 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
12 oct. 2007 à 08:49
Bonjour,

    tes fonctions sont mises en dynamique je suppose ?
        ( sinon on aimerait voir l'appel de la function selected
           quoique j'aimerais voir  comment c'est fait, si
            ma réponse ne convient pas ! )

zéro

un

deux

<script type="text/javascript">
    var n=0,tmp;
    while ( document.getElementById("elem"+n) )
    {   tmp=document.getElementById("elem"+n);
        tmp.num=n;
        tmp.onclick=function()
        {    alert(this.id+"\n"+this.num+"\n"+n);    }
        n++;
    }
</script>

on voit que this.num varie de 0 à 2, mais que n est toujours = 3

( c'est PetOleTeam qui nous avait montré ça )

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
<hr />
3
BEAUBRIUS Messages postés 120 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 8 février 2008
12 oct. 2007 à 13:51
c'est bon tous marche bien
Merci beaucoup
0
Rejoignez-nous