El.onclick = function([param]){};

Résolu
xactise Messages postés 507 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 22 juin 2012 - 16 févr. 2010 à 14:18
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 - 3 mars 2010 à 18:07
Bonjour à tous.

je vous expose mon problème.

J'intéroge une base de donnée avec ajax, je récupère les donnée souhaité au format JSON, et j'utilise ces données pour faire du DOM.

Exemple ci dessous :

var globalDIV = document.getElementById('globalDIV');
for(var i=0; i<myJSON.length;i++)
{
    var div = document.createElement("div");
    div.onclick = function(){};

    globalDIV.appendChild(div);
}


Mon souci est qu'au niveau de l'evenement "onClick" de mon element div créé. je souhaiterai faire une fonction avec paramètre. Après quelque recherche sur internet j'ai vu ceci :

//NOTE: showPopup();
//or showPopup(param);
//will NOT work here.
//Must be a reference to a function,
//not a function call.


En gros et si je comprends bien, on peut faire référence a une fonction existante ou directement créer sa fonction mais sans paramètre(s).

Or moi je voudrai bien lui ajouter un évènement onClick avec une fonction avec paramètre.

Exemple :
    div.onclick = function(myJSON.value[i]){
    switch(myJSON.value[i])
    {
        ...statements...
    }
};


Je sais pas si je suis clair, si vous avez une réponse ou une alternative à me proposer je suis preneur.

D'avance merci

L0rD...

3 réponses

PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
16 févr. 2010 à 21:32
Bonjour,
Or moi je voudrai bien lui ajouter un évènement onClick avec une fonction avec paramètre.
...une solution consiste à ajouter une propriété à l'objet et à l'utiliser dans la fonction, un petit exemple ci après
<html>
<head>
<script type="text/javascript">
//--------------------
function Init_Page( ){
  var T_Div = document.getElementsByTagName( 'DIV');
  for( var i = 0; i < T_Div.length; i++){
    T_Div[i].param = i;
    T_Div[i].onclick = function(){
      switch( this.param){
        case 0:
        case 1:
          alert( this.param +'\nINFERIEUR à 2');
          break;
        default:
          alert( this.param +'\nSUPERIEUR à 1');
      } 
    }
  }
}
</script>
</head>


Ligne 1


Ligne 2


Ligne 3


Ligne 4


</html>

;O)
3
xactise Messages postés 507 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 22 juin 2012 2
1 mars 2010 à 08:49
Merci je ne sais pas si c'est "propre" mais sa marche, je valide, si d'autres personnes ont d'autres proposition je reste preneurs.


L0rD...
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
3 mars 2010 à 18:07
Bonjour,
je ne sais pas si c'est "propre"
ajouter une propriété à un objet, rien de plus courant...
...on aurait pu ajouter un attribut en utilisant setAttribute, cela aurait peut être été plus classe...
;O)
0
Rejoignez-nous