JavaScriptのクリックイベントに影響を及ぼすためのHTML選択があります。私のコードは技術的には機能しますが、なぜ私のクリックイベントが対応する時に実行されて、選択ボックスの値を変更するのかがわかりません。Javascriptの条件付きクリックイベントが複数回実行されています
私はオプション選択を--
でないものに変更します。 donate
というラベルの付いたテキストをクリックすると、コンソールログにMichael
のテキストが表示されます。ここで、オプションの値を ' t --
'という別の値に切り替えて、donate
を再度クリックすると、自分のクリックイベントが2回実行されます。このプロセスをもう一度繰り返すと、クリックイベントが3回実行されます。
私の例はちょっと無意味に見えますが、うまくいきません。
var changing = document.getElementById("changing");
var donate = document.getElementsByClassName("donate");
changing.addEventListener('change', function() {
if (this.value !== "--") {
for (i = 0; i < donate.length; i++) {
donate[i].addEventListener('click', function() {
console.log("Michael");
});
}
}
});
<select id="changing">
\t <option value="--">--</option>
\t <option value="vegetarian">Vegetarian</option>
\t <option value="technical">Technical</option>
\t <option value="shoes">Shoes</option>
</select>
<p class="donate">Donate</p>
<p class="donate">Donate</p>
<p class="donate">Donate</p>
明確にするために、私は一度オプションの変更を行う場合は、その後、任意のdonate
テキストをクリックすると、テキストMichael
1時間を加え、私のコンソールにつながります。私がもう一度それを変更すると、これは2に乗算され、Michael
の3つの番組につながります。再度変更し、3を加えて、コンソールロギングの6倍につなげるMichael
。
これは、donate
テキストをクリックするたびに私の機能が何度も実行されていることを示しています。私の機能が各オプションの変更後に1回だけ実行される場所にどのように再フォーマットするのですか?または、私が完全に欠けている根本的なものがありますか?
他のイベントリスナーの内部にイベントリスナーを設定しないでください。 –