2017-08-16 1 views
0

Mon code pour ajouter une fonction onclick est la suivante newbutton.onclick = whoWon(this.id)Assigner onclick à un problème de fonction

Autre code pertinent

var winner; 

function whoWon(name){ 
    winner = name 
} 

Mon problème est que le onclick lorsque je tente de lui attribuer exécute et n » t ajouter l'onclick. Je le sais parce que quand je crée le nouveau bouton, le gagnant de variable est toujours le bouton le plus récent créé. De même, lorsque j'inspecte l'élément dans google chrome, la seule chose à attribuer est l'ID et la classe.

Répondre

2

newbutton.onclick = whoWon(this.id) appellera effectivement la fonction whoWon.

Vous devez transmettre le whoWon tel quel, sans l'appeler et le lier le this.id. Cela devrait faire l'affaire:

newbutton.onclick = whoWon.bind(null, this.id) 

Ou comme mentionné par @styfle dans les commentaires, vous pouvez créer une fonction anonyme:

newbutton.onclick =() => whoWon(this.id) 
+0

Ou vous pouvez assigner une fonction anonyme avec 'newbutton.onclick =() => whoWon (this.id) ' – styfle

+0

Merci de m'avoir signalé, répondre édité :) – Erazihel

+0

J'ai essayé ces deux sugestions mais cela ne fonctionne toujours pas. Le bouton situé dans une rangée de table est-il un problème? –

1

Votre code newbutton.onclick = whoWon(this.id) exécute whoWom(this.id) et affecte le résultat de celui-ci (qui est undefined dans ce cas) à newbutton.onclick.

Ce que vous devez vraiment utiliser est:

newbutton.addEventListener('click', whoWon); 

De là, vous pouvez accéder à l'équivalent de this.id avec event.target.id