これは少し厄介ですが、静的変数の配列が必要です。関数が呼び出されるたびに、これらの変数にアクセスする必要があります。基本的に、現在経過時間と呼ばれている単一の変数によって「制御」されるエフェクト関数があります。
ただし、同じ要素でエフェクトを実行しないようにするために、関数に渡される要素ごとに経過時間が必要です...(私のフェード関数の場合、これによりちらつき効果が発生します)。
を使用しelement.id
て変数に名前を付けたいと思います。
連想配列は実際には連想配列ではないので、ここでは使用しないでくださいという投稿を読んだばかりです。
以下は、更新する必要がある現在の関数です。
/**
* 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;
};