0

このチュートリアルを使用して、一定期間の変更を実装するための基本的な Javascript 関数を作成しました。

function fadetext(){ 
if(hex>0) {
hex-=11;
document.getElementById("sample").style.color="rgb("+hex+","+hex+","+hex+")";
setTimeout("fadetext()",20); 
}
else
hex=255
}

質問 1:function ;を介して変数を入力する方法 例えばfadetext(element, time)。値を変数に置き換えるだけでは、そうすることができませんでした。

質問 2: javascript による変更を徐々に実装するのは、標準的な (そして正しい) 方法ですか? 私にとっての混乱点はfadetext()、独自の関数内で関数を使用することです。これは過負荷になりませんか?

4

2 に答える 2

5

には、文字列ではなく関数を渡す必要がありますsetTimeout

function fadeText(element, duration) {
    ...
    setTimeout(function() {
        fadeText(element, duration);
    }, 20);
}

このコードは、元のパラメーターをクロージャーに取り込む無名関数を渡します。

于 2012-06-17T19:57:52.597 に答える
1

fadetext()はい、関数の外側にタイマーを設定し、hex外側をグローバル変数として定義する必要があります。これにより、両方の問題を解決できます:)そしてsetInterval()、毎回 setTimeout を呼び出さないようにし、文字列の代わりに関数を呼び出します。(あるユーザーが指摘したように、私のコードには再利用性の問題があります)。

var hex = 255;
setInterval(fadetext,20);

function fadetext(){ 
   if(hex>0) {
   hex-=11;
   document.getElementById("sample").style.color="rgb("+hex+","+hex+","+hex+")";
   }
}

おまけとして、jQueryを調査すると、フェード (およびその他のアニメーション化されたタスク) の実装が非常に簡単になり、多くの場合、単一のコマンドまたはコマンド ライン内で実行されます。

于 2012-06-17T19:56:25.203 に答える