0

私の質問は簡単ですが、それは私を大いに逃れています。jquery 関数を使用して、変数が false のときに要素を点滅させ、true のときに非表示にしています。

function flasher(bl){
    if(!bl){
    setInterval(function(){
            $(".flash").fadeToggle("slow");
            }, 300);
    }
}
var bl = false;
$(document).ready(function(){
    $(".flash").on("hover", function(){
        bl = true;
    });

        flasher(bl);
});

アラートを使用すると、実行中の関数が表示され、真になりますが、これで間違いを確認できません。firebug を使用すると、bl の値は false のままです。グローバル bl と var bl を試しましたが、すべて同じままです。ご協力ありがとうございました。

4

2 に答える 2

2

これを試して :

function flasher(){
      setInterval(function(){
         if(!bl){
              $(".flash").fadeToggle("slow");
         }
      }, 300);
}

var bl = false;
$(document).ready(function(){
    $(".flash").hover(function(){
        bl = true;
    }, function() {
        bl = false;
    });
    flasher();
});
于 2012-07-18T09:27:33.623 に答える
1

ここでの問題は、ready関数が最初に1回しか実行されないため、関数フラッシャーが1回だけ実行されることです。

変数の状態を変更するたびに実行する必要があります。

$(document).ready(function(){
    var interval;
    $(".flash").on("hover", function(){ // hoverin
        interval = setInterval(function(){
               $(".flash").fadeToggle("slow");
            }, 300);
    }, function(){ // hoverout
        clearInterval(interval);
        $(".flash").fadeOut("slow");
    });
});

また、インターバルでは300ミリ秒のインターバルを使用し、fadeToggleは低速です(600ミリ秒)。これは、次のアニメーションを開始しているときに、フェードアニメーションが終了していないことを意味します。アニメーションはスクランブルされ、間隔をクリアした後も数秒間点滅し続けます。

また、すでに言われているように、StackOverflowを引き続き使用してヘルプを表示する場合は、そのルールに従い、有効な回答を受け入れる必要があります。

于 2012-07-18T09:29:17.770 に答える