私は複数の選択に対して機能する単一の関数を作成しようとしています。私はこのように動作するはずのビデオゲームの選択画面を作成しています:https://oege.ie.hva.nl/~meestej005/eind/引数を持つ関数を `addEventListener`に渡す
私は、これは、このコードでいた達成する方法を:
function character1(){
for (var i = 0; i < sprite.length; i++){
sprite[i].classList.remove('charSprite');
}
sprite[0].classList.add('charSprite');
hadouken.play();
}
私はこの機能を4回、各文字の1を作りました。
char1.addEventListener('click', character1);
今は、各文字に対してこれを行う関数を作成したいと考えています。これは私が思いついたものです:
function character(name, music){
for (var i = 0; i < sprite.length; i++){
sprite[i].classList.remove('charSprite');
}
name.classList.add('charSprite');
music.play();
}
char1.addEventListener('click', character(charSprite1, hadouken));
悲しいことに、これは動作しません。文字の1つをクリックすると、エラーは発生しません。だから私は何か間違っているが、何が分からないのか。私はJavascriptだけを使ってこれを修正したいと思います。私はあなたが私を助けてくれることを願っています。ありがとう。
を私は感謝、これはどのように機能するかをより多くのを理解し始めている:私は、クロージャを使用して
name
とmusic
引数をキャプチャし、character
から機能を毎回返すお勧めします。しかし閉鎖によってあなたはどういう意味ですか?そして私はどのような機能を返すべきですか? – H0ndman2closure [here](http://stackoverflow.com/questions/111102/how-do-javascript-closures-work#111111)についてさらに読む。上記のコードの 'return function'は、' name'と 'music'を"キャプチャ "できるこの解決策の一部です。 – gyre
もっと簡単な方法は、バインディングを渡すことです。 –