0

jqueryには、フェード効果のあるボタンがあります:

function blinky() {
    $('#ButtonContent_btnSubmit').delay(100).fadeTo(100, 0.5).delay(100).fadeTo(100, 1, blinky);    
}

これにより、素敵な点滅効果が発生しますが、点滅効果を10秒間だけ持続させたいです。

10秒くらいだけ点滅させたいのですがsetTimeout()、これに当てはまりますか?私は次のように setTimeout を適用しようとしました:

function blinky() {
    setTimeout($('#ButtonContent_btnSubmit').delay(100).fadeTo(100, 0.5).delay(100).fadeTo(100, 1, blinky), 100);  
}

しかし、これはうまくいかないようです。

編集

私はjquery初心者なので、これを機能させようとしています...ここで私のドキュメントの準備ができているとしましょう:

$(document).ready(function () {
 if ($('#StatusContent_ddlStatus').val() == "Not Submitted" && $("#LineItemContent_gvLineItems tr").length > 0) {
              blink();
        }
});

var count = 0;

function blink() {
    if (++count < 10)
        $('#ButtonContent_btnSubmit').delay(100).fadeTo(100, 0.5).delay(100).fadeTo(100, 1, blink);
}​

開発者ツール(クロム)では、ある種の例外がスローされます...

編集 2

すべてをドキュメントの準備ができている場合:

 $(document).ready(function () {
     if ($('#StatusContent_ddlStatus').val() == "Not Submitted" && $("#LineItemContent_gvLineItems tr").length > 0) {
                  blink();
            }

 var count = 0;

    function blink() {
        if (++count < 10)
            $('#ButtonContent_btnSubmit').delay(100).fadeTo(100, 0.5).delay(100).fadeTo(100, 1, blink);
    }​

    });

次に、開発者ツールでは、Uncaught syntax error: Unexpected token illegal と表示されます。

編集 3

呼び出す前に一番上に配置しようとしました:

$(document).ready(function () {
        var count = 0; 
        var f = 0;

         function blink() { 
            if (++count < 10) 
                $('#ButtonContent_btnSubmit').delay(100).fadeTo(100, 0.5).delay(100).fadeTo(100, 1,        blink); 
            }

          if ($('#StatusContent_ddlStatus').val() == "Not Submitted" && $("#LineItemContent_gvLineItems tr").length > 0) {
            blink();
        }
});

同じ問題...

4

3 に答える 3

2

関数の呼び出し回数を保存するだけで、もっと簡単になります。blink

var count = 0;

function blinky() {
    if (++count < 10)
        $('#ButtonContent_btnSubmit').delay(100).fadeTo(100, 0.5).delay(100).fadeTo(100, 1, blinky);
}​

または時間制限あり:

var startDate = new Date().getTime();
function blinky() {
    if (new Date().getTime() - startDate < 10000)
        $('#ButtonContent_btnSubmit').delay(100).fadeTo(100, 0.5).delay(100).fadeTo(100, 1, blinky);
}​
于 2012-04-25T13:58:15.360 に答える
0

時間をマークして、次のようにチェックしてみてください。

var markTime = new Date().getTime();

function blinky() {
  $('#ButtonContent_btnSubmit').delay(100).fadeTo(100, 0.5).delay(100).fadeTo(100, 1, function() {
    if(new Date().getTime() < (markTime + 10000)) blinky();
  });    
}

blinky();
于 2012-04-25T13:59:40.427 に答える
0

これはうまくいくはずです-->

var stopT=false;

var timerHdl=null; $(document).ready(function () { setTimeout(function(){stopT=true;}, 10000); 点滅();

}); 関数blink(){
if(stopT===true) {clearTimeout(timerHdl); return;} timerHdl = setTimeout(function(){$('#ButtonContent_btnSubmit').delay(100).fadeTo(100, 0.5).delay(100).fadeTo(100, 1, 点滅)}, 100); }

</p>

于 2012-04-25T14:09:49.217 に答える