Button createelement et onclick

parousky Messages postés 325 Date d'inscription   Statut Membre Dernière intervention   -  
schweppes41 Messages postés 140 Statut Membre -
Bonjour, dans un de mes codes javascript, je créé un bouton avec createelement, et j'associe à ce bouton une fonction lorsque l'on clique dessus.
Seulement, au moment de sa création, la fonction qui devrait être appelée lors du clic est appelée directement.
Alors voilà mon code :


<div id="Button"></div>

function AfficheButton()
{

var Button = document.getElementById('Button');

var button = document.createElement("button");
button.type = "button";
button.class = ""+listeAmisConv[0][i]+"";
var t = document.createTextNode(""+listeAmisConv[1][i]+"");
button.appendChild(t);
Button.appendChild(button); button.setAttribute("onclick",MaFonction(1));

}

function MaFonction(x)
{
if(x == 1)
{
console.log("Tcho !");
}
}


Et le message "Tcho !" s'affiche dès la création du bouton avant le premier clic !
Qu'est ce que j'ai fais de si mal ?!
Merci d'avance pour vos réponses !

3 réponses

  1. schweppes41 Messages postés 140 Statut Membre 27
     
    Bonjour,

    c'est la ligne
    button.setAttribute("onclick",MaFonction(1));
    qui ne va pas, remplace MaFonction(1) par MaFonction
    0
  2. parousky Messages postés 325 Date d'inscription   Statut Membre Dernière intervention   6
     
    Mais si je veux appeler MaFonction avec '1' comme paramètre ?
    0
  3. schweppes41 Messages postés 140 Statut Membre 27
     
    Soit tu passes avec des data-attribute sur le button :

    
    function AfficheButton()
        {
    
            var div = document.getElementById('Button');
            console.log(div);
            var button = document.createElement("button");
            button.type = "button";
            button.class = "maclasse";
            
            var t = document.createTextNode("Blablabla");
            button.appendChild(t);
            button.setAttribute("data-x",1);
            div.appendChild(button);
          
    button.addEventListener("click", MaFonction);
    
        }
    
        function MaFonction()
        {
            console.log("click");
            
            if (this.getAttribute('data-x') == 1)
            {
                console.log("Tcho !");
            }
        }  //do work
        
        
        
        AfficheButton();
    
    0