Button createelement et onclick

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. Bonjour,

    c'est la ligne
    button.setAttribute("onclick",MaFonction(1));
    qui ne va pas, remplace MaFonction(1) par MaFonction
    0
    1. Mais si je veux appeler MaFonction avec '1' comme paramètre ?
      0
      1. 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