Button createelement et onclick
parousky
Messages postés
325
Date d'inscription
Statut
Membre
Dernière intervention
-
schweppes41 Messages postés 140 Statut Membre -
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 :
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 !
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
Bonjour,
c'est la ligne
c'est la ligne
button.setAttribute("onclick",MaFonction(1)); qui ne va pas, remplace MaFonction(1) par MaFonction
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();