Button createelement et onclick

Fermé
parousky Messages postés 325 Date d'inscription mardi 11 septembre 2012 Statut Membre Dernière intervention 20 février 2022 - 23 avril 2015 à 12:31
schweppes41 Messages postés 135 Date d'inscription mercredi 1 avril 2015 Statut Membre Dernière intervention 22 août 2016 - 24 avril 2015 à 09:33
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

schweppes41 Messages postés 135 Date d'inscription mercredi 1 avril 2015 Statut Membre Dernière intervention 22 août 2016 26
23 avril 2015 à 17:16
Bonjour,

c'est la ligne
button.setAttribute("onclick",MaFonction(1));
qui ne va pas, remplace MaFonction(1) par MaFonction
0
parousky Messages postés 325 Date d'inscription mardi 11 septembre 2012 Statut Membre Dernière intervention 20 février 2022 6
23 avril 2015 à 18:56
Mais si je veux appeler MaFonction avec '1' comme paramètre ?
0
schweppes41 Messages postés 135 Date d'inscription mercredi 1 avril 2015 Statut Membre Dernière intervention 22 août 2016 26
24 avril 2015 à 09:33
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