質問: maincounterという関数を作り、キーボードでクリックした際に カウントアップするようになっているJavascriptを作成しました。 document.getElementById('start_stop').addEventListener('click', maincounter) function maincounter(){ count++; ///// 最近、マウスを左クリックしても操作できるように仕様変更して、 下記のように追加しました。 document.getElementById('start_stop').addEventListener('click', maincounter) document.getElementById('start_stop').addEventListener('mousedown', maincounter) function maincounter(){ count++; ///// ただ、マウスクリックとキーボードクリックにおいて、動作に違いがあり、このカウントアップ数がいくつになっているかを表示するようにしたところ、 1キーボードクリックではEnterを押すごとにきちんとカウントアップしている (理想の動作) 2mousedown、つまりマウス左クリックした場合、クリック押した瞬間と離した瞬間で二度カウントアップしてしまう。 狙っている使用では押した瞬間だけカウントアップしてくれれば良いのですが、 addEventListener('mousedown', )において上記2のような動作になるものでしょうか? 宜しくお願い致します。
回答: clickイベントはマウスボタン押下でも発火します。 キーボード操作、マウス操作共にクリック1回分とカウントする意図であれば、clickイベントハンドラのみにカウント処理を入れれば良いと思います。 (※掲示さらたコードのみならずで見るなら、mousedownを監視する必要はありません。) Re: negentropy さん