前提
あるSNSサイトで、たとえば facebook のような「いいね!」機能を実装しようとしています。そこで、下のような手順を考えました
- いいね!ボタンにマウスポインターが乗ったら、時間を測り始める
- もし、ボタンがすぐにクリックされたら、「いいね!」をして、かつ、時間計測をやめる
- もし、すぐにボタンがクリックされずに、1秒経ったら、いくつかのリアクションのアイコンを表示し、かつ、時間計測をやめる
- ボタンからマウスポインターが外れたら、時間計測をやめる。このとき、もしリアクションアイコンが表示されていたら、それを閉じる
マウスポインターがある要素に乗ったら、時間を測りたいので、下のようにonmouseover
を書きました
html
1<button id="reaction" onmouseover="reaction()">Click this</button>
そして、下のような関数を書きました
javascript
1function reaction() { 2 3 const reaction = document.getElementById('reaction'); 4 reaction.addEventListener('click', console.log('Clicked')); 5 6}
ボタンにマウスポインターが乗り、かつ (その後1秒経つ前に) ボタンがクリックされたら、ある関数を呼び出したいので、こういう記述をしました。(ある関数というのは、上の記述ではconsole.log('Clicked')
です)
課題
しかし、なぜかマウスポインターが乗ったとたんにそのある関数が呼び出されてしまいます。「マウスポインターが乗りさらにクリックされたら」という条件のもとで関数を呼び出すことはできますか?
ご意見やヒント、参考情報がございましたら、お寄せくださいませ
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/05/21 09:01