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

[Résolu]
Signaler
Messages postés
507
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
22 juin 2012
-
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
-
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

Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
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)
Messages postés
507
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
22 juin 2012
2
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...
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
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)