setTimeoutの処理の順番
マウスオーバーでふきだしを出すようにしたくて試行錯誤してました。
mouseover で、ふきだし表示、
mouseout で、ふきだし非表示みたいな。
で、悩んでたことは、
ふきだしをマウス長乗せ(?)で出そうと思って、mouseover の処理で
setTimeout(showF, 500);
とした時、
500ms待ってる間に mouseout が走ると、
マウスが乗ってないのにふきだしが出たままになる!ということ。
そこで、こちらで勉強させていただきました。
非常に分かりやすいです。ありがとうございます。
500ms以内に mouseout した場合、
- mouseover <表示処理を500ms後にセットするよ!>
- mouseout <非表示にするよ!>
- showF <表示するよ!>
の順番で実行されてる感じなのです。
解決方法は、
- グローバル変数で mouseOverCheck を定義&falseにする
- mouseover で mouseOverCheck をtrueにする
- mouseout で mouseOverCheck をfalseにする
- showF で mouseOverCheck がtrueならば表示する
もっとスマートな解決方法があったら教えてください。