2012-04-07 2 views
0

これは少し面倒ですが、私は静的変数の配列が必要です。関数が呼び出されるたびに、これらの変数にアクセスする必要があります。基本的には、現在elapsed_timeと呼ばれる単一の変数によって「制御される」エフェクト関数があります。静的変数の配列の使い方は?

しかし、関数に渡される要素ごとにelapsed_timeが必要です。そのため、同じ要素にエフェクトを実行しないようにすることができます。(私のフェード関数では、ちらつき効果があります)。

element.idを使用して変数に名前を付けたいとします。

私は連想配列が本当に連想配列ではなく、あなたが以下here.

は私が更新する必要が私の現在の機能でそれらを使用するべきではないことという記事を読みました。

/** 
* Effects 
*/ 

var Effects = function(element) 
{ 
    this.element = element; 
}; 

Effects.prototype.fade = function(direction, max_time) 
{ 
    Effects.elapsed = 0; 
/* 
    Effects.arrayHold = []; 
    Effects.arrayHold.push(this.element.id); 
*/ 
    var persist_element = this.element; 
    function next() 
    { 
     Effects.elapsed += 10; 
     if (direction === 'up') 
     { 
      persist_element.style.opacity = Effects.elapsed/max_time; 
     } 
     else if (direction === 'down') 
     { 
      persist_element.style.opacity = (max_time - Effects.elapsed)/max_time; 
     } 
     if (Effects.elapsed <= max_time) 
     { 
      setTimeout(next, 10); 
     } 
    } 
    next(); 
    return true; 
}; 
+0

を使用してHTTP ://api.jquery.com/fadeOut/)関数をjQueryに組み込みました。 [fadeToggle()](http://api.jquery.com/fadeToggle/)関数もあります。すべての期間、イージング、コールバックの機能オプションがあります。私はクロスブラウザ機能について言及しましたか? – faino

+0

ブログの投稿についてどう思いますか?連想配列を使用して最適なツールを使用し、落とし穴を避けてください。 – stark

+0

ArrayとしてArrayHoldをオブジェクトとして使用しているため、配列としてエフェクトを宣言しないでください。それでは、より効果的な使用方法を考えてください。Effectss.objectHold = {persust_element.id:0};そこから取る –

答えて

1

ジャスト([フェードイン()](http://api.jquery.com/fadeIn/)および[フェードアウト()]に見て、真剣オブジェクトの代わりに配列