0

これを行うにはもっと良い方法があると思います。おそらく誰かが私の間違いを指摘することができます。カウントアップとカウントダウンによってbox-shadowblurcssプロパティをパルスし、開始されると関数自体を呼び出します。

何らかの理由で、最初に渡されたsetTimeout呼び出しに引数を渡すことができません。

これをもっときれいに書く方法について何かアイデアはありますか?それは機能しますが、他のcssプロパティをアニメーション化するために一般化することもできます。

var pulseBoxShadowBlurCounter = 0;
var pulseBoxShadowBlurDirection;

$(document).ready(function() { // dom binds

pulseBoxShadowBlur($('#getData-btn'),14,'#fff',100); // start the process

});

function pulseBoxShadowBlur(pulseElement,max,color,delayTime){
var cssInput = '0px 0px '+pulseBoxShadowBlurCounter+'px '+color;
$(pulseElement).css('box-shadow', cssInput);

    if(pulseBoxShadowBlurCounter == max){
        pulseBoxShadowBlurDirection = 1; // backwards
    }

    if(pulseBoxShadowBlurCounter == -5){ // negative num for pause at 0 time
        pulseBoxShadowBlurDirection = 0; // forward
    }

    if(pulseBoxShadowBlurDirection == 0){ 
        pulseBoxShadowBlurCounter++;
    }else{
        pulseBoxShadowBlurCounter--;
    }

setTimeout( "pulseBoxShadowBlur($('#getData-btn'),14,'#fff',100);",delayTime ); // loop
}
4

3 に答える 3

4

あなたはできる:

setTimeout(function() { pulseBoxShadowBlur(element, max, color, delayTime); }, delayTime);

setTimeout()一般に、またはの最初の引数としてJavaScriptコードの文字列バージョンを渡すこと setInterval()はお勧めできません。代わりに関数を渡します。

于 2013-03-25T00:14:02.717 に答える
1

あなたはこのように閉鎖でそれをしなければなりません:

setTimeout( function() {
   pulseBoxShadowBlur($('#getData-btn'),14,'#fff',100);
}),delayTime ); 
于 2013-03-25T00:14:17.600 に答える
1

jQueryを使用delayしているので、次queueのように使用できます。

$('#getData-btn').delay(delayTime).queue(function(next) {
  pulseBoxShadowBlur($(this),14,'#fff',100);
  next(); // resume queue
});
于 2013-03-25T00:19:22.297 に答える