独自の動的スライドショー スクリプトを作成できると考えました。
function slider( container )
{
var time = 1200;
var width = 1000;
var container = document.getElementById(container);
var name = container.childNodes[1].className;
var content = document.getElementsByClassName(name);
var num = ( content.length * width );
next = function()
{
var px = container.style.marginLeft;
var diff = Math.abs( px.replace( 'px', '' ) );
var shifted = ( diff ) ? ( diff / width ) : '0';
shifted++;
if ( shifted == content.length )
{
shifted = 0;
shift();
}
container.style.marginLeft = ( shifted == content.length ) ? '0' : '-' + ( shifted * width ) + 'px';
}
shift = function()
{
for ( var i = 0; i < content.length; i++ )
{
var delay = ( ( i + 1 ) * time );
setTimeout( next, delay );
}
}
container.style.width = num + 'px';
shift();
}
他のすべてのスライドショー コンテナで問題なく動作します。スライドは内部関数によって常に変更されます
関数 next()
この関数は、別の内部関数を使用してそれらをリセットするために、次のスライドとスライドがいつ終了するかを決定します
関数シフト()
異なる DIV コンテナーに対して異なる変数を使用して交換可能ですが、以下のように複数のインスタンスを実行しようとすると
スライダー(「要素」); スライダー(「要素2」);
最初はコードを実行し、すべての要素のスライドを循環しますが、最初のインスタンスのみが適切にリセットされ、最初から最後まで何度も「スライド」し続けます。複製インスタンスが shift() された後、複製に対して必要な next() は呼び出されません。
Slider() をマスター クラスの外に完全に移動して、ページから呼び出しても同じ結果になります。
おそらく1行の修正なので、いじってください。