2009-09-03 8 views
1

これはわかりません。おそらく数時間前のことを見て、私のコードを見直した後、私はまだこの奇妙な振る舞いを知ることには近づいていません。jQueryで循環していない

背景の色あせと関係があるし、配列内にリストされている画像のうち約12個を残していることになります。

オフに左にされている画像は、次のとおりです。BG6、bg36、bg13、BG8、bg14、bg15、bg24、bg29、bg27、bg9、bg19、BG3

メインのコードパート1:

insertLayer(); 

var bg1 = "#000 url('./images/background/image_1.jpg') no-repeat fixed center center"; 
var bg2 = "#000 url('./images/background/image_2.jpg') no-repeat fixed center center"; 
var bg3 = "#000 url('./images/background/image_3.jpg') no-repeat fixed center center"; 

var bg4 = "#000 url('./images/background/image_4.jpg') no-repeat fixed center center"; 
var bg5 = "#000 url('./images/background/image_5.jpg') no-repeat fixed center center"; 
var bg6 = "#000 url('./images/background/image_6.jpg') no-repeat fixed center center"; 

var bg7 = "#000 url('./images/background/image_7.jpg') no-repeat fixed center center"; 
var bg8 = "#000 url('./images/background/image_8.jpg') no-repeat fixed center center"; 
var bg9 = "#000 url('./images/background/image_9.jpg') no-repeat fixed center center"; 

var bg10 = "#000 url('./images/background/image_10.jpg') no-repeat fixed center center"; 
var bg11 = "#000 url('./images/background/image_11.jpg') no-repeat fixed center center"; 
var bg12 = "#000 url('./images/background/image_12.jpg') no-repeat fixed center center"; 

var bg13 = "#000 url('./images/background/image_13.jpg') no-repeat fixed center center"; 
var bg14 = "#000 url('./images/background/image_14.jpg') no-repeat fixed center center"; 
var bg15 = "#000 url('./images/background/image_15.jpg') no-repeat fixed center center"; 

var bg16 = "#000 url('./images/background/image_16.jpg') no-repeat fixed center center"; 
var bg17 = "#000 url('./images/background/image_17.jpg') no-repeat fixed center center"; 
var bg18 = "#000 url('./images/background/image_18.jpg') no-repeat fixed center center"; 

var bg19 = "#000 url('./images/background/image_19.jpg') no-repeat fixed center center"; 
var bg20 = "#000 url('./images/background/image_20.jpg') no-repeat fixed center center"; 
var bg21 = "#000 url('./images/background/image_21.jpg') no-repeat fixed center center"; 

var bg22 = "#000 url('./images/background/image_22.jpg') no-repeat fixed center center"; 
var bg23 = "#000 url('./images/background/image_23.jpg') no-repeat fixed center center"; 
var bg24 = "#000 url('./images/background/image_24.jpg') no-repeat fixed center center"; 

var bg25 = "#000 url('./images/background/image_25.jpg') no-repeat fixed center center"; 
var bg26 = "#000 url('./images/background/image_26.jpg') no-repeat fixed center center"; 
var bg27 = "#000 url('./images/background/image_27.jpg') no-repeat fixed center center"; 

var bg28 = "#000 url('./images/background/image_28.jpg') no-repeat fixed center center"; 
var bg29 = "#000 url('./images/background/image_29.jpg') no-repeat fixed center center"; 
var bg30 = "#000 url('./images/background/image_30.jpg') no-repeat fixed center center"; 

var bg31 = "#000 url('./images/background/image_31.jpg') no-repeat fixed center center"; 
var bg32 = "#000 url('./images/background/image_32.jpg') no-repeat fixed center center"; 
var bg33 = "#000 url('./images/background/image_33.jpg') no-repeat fixed center center"; 

var bg34 = "#000 url('./images/background/image_34.jpg') no-repeat fixed center center"; 
var bg35 = "#000 url('./images/background/image_35.jpg') no-repeat fixed center center"; 
var bg36 = "#000 url('./images/background/image_36.jpg') no-repeat fixed center center"; 

var bg37 = "#000 url('./images/background/image_37.jpg') no-repeat fixed center center"; 
var bg38 = "#000 url('./images/background/image_38.jpg') no-repeat fixed center center"; 
var bg39 = "#000 url('./images/background/image_39.jpg') no-repeat fixed center center"; 

var bg40 = "#000 url('./images/background/image_40.jpg') no-repeat fixed center center"; 
var bg41 = "#000 url('./images/background/image_41.jpg') no-repeat fixed center center"; 

var images = [bg30, bg34, bg6, bg7, bg10, bg36, bg33, bg26, bg14, bg5, bg40, bg13, bg16, bg23, bg8, bg18, bg32, bg14, bg31, bg15, bg24, bg20, bg22, bg29, bg37, bg41, bg27, bg25, bg12, bg9, bg4, bg21, bg19, bg1, bg28, bg3, bg2, bg39, bg38]; 

var current = 0; 

for (var a = 0; a < 39; a++) 
{ 
$('#fade1').fadeOut(16000, function() 
{ 
    $('#fade1').css("background", images[current]); 
    current++; 
}); 

if (current > 38) 
{ 
    current = 0; 
} 

$('#fade1').fadeIn(16000, function() 
{ 
    $('#background').css("background", images[current]); 
    current++; 
}); 

if (current > 38) 
{ 
    current = 0; 
} 

$('#fade1').fadeOut(16000, function() 
{ 
    $('#fade1').css("background", images[current]); 
    current++; 
}); 

if (current > 38) 
{ 
    current = 0; 
} 
} 

メインのコードパート2:任意の助け

var backgroundFader = function(element, bgClasses, nextChange) 

{ 
this.cssProps = {'position' : 'relative', 'z-index' : 100}; 
this.bgs = ['bg1', 'bg2', 'bg3', 'bg4', 'bg5', 'bg6', 'bg7', 'bg8', 'bg9', 'bg10', 'bg11', 'bg12', 'bg13', 'bg14', 'bg15', 'bg16', 'bg17', 'bg18', 'bg19', 'bg20', 'bg21', 'bg22', 'bg23', 'bg24', 'bg25', 'bg26', 'bg27', 'bg28', 'bg29', 'bg30', 'bg31', 'bg32', 'bg33', 'bg34', 'bg35', 'bg36', 'bg37', 'bg38', 'bg39', 'bg40', 'bg41']; 

this.element = element || ".bg_fader"; 
}; 

function insertLayer(element) 
{ 
var cssProps = {'position' : 'relative', 'z-index' : 100}; 
var bgs = ['bg1', 'bg2', 'bg3', 'bg4', 'bg5', 'bg6', 'bg7', 'bg8', 'bg9', 'bg10', 'bg11', 'bg12', 'bg13', 'bg14', 'bg15', 'bg16', 'bg17', 'bg18', 'bg19', 'bg20', 'bg21', 'bg22', 'bg23', 'bg24', 'bg25', 'bg26', 'bg27', 'bg28', 'bg29', 'bg30', 'bg31', 'bg32', 'bg33', 'bg34', 'bg35', 'bg36', 'bg37', 'bg38', 'bg39', 'bg40', 'bg41']; 

var element = element || ".bg_fader"; 

var layerel = element.substr(1) + "-layer"; 
if(jQuery("#"+layerel).length == 0) 
{ 
    jQuery("<div id='"+layerel+"'></div>") 
    .insertAfter(element) 
    .nextAll().appendTo("#"+layerel) 
    .parent().css(cssProps); 
} 
} 

ありがとう!

答えて

1

これにmkoryakと一緒にいるつもりです。コードは問題を複雑にする方法です。

これは(これは、もちろん、完全にテストされていません)私はそれを行うだろうかです:

var fade_time = 1000; 
var wait_time = 15000; 
var curr = 0; 
var last = 41; 
var bg = $("#background"); 

function do_fade() { 
    curr++; 
    if (curr > last) { 
     curr = 1; 
    } 
    bg.fadeOut(fade_time, function() { 
     // switch your image here. something like this 
     bg.css('background-image','./images/background/image_' + curr + '.jpg'); 
     bg.fadeIn(fade_time); 
    } 
} 

id = setInterval(do_fade, wait_time); 

うまくいけば、これはあなたのために働きます。

+0

こんにちはRhinosaurus:それは本当に素晴らしいようです!投稿されたリンクではオンラインになっていますが、背景が消えてしまい、次の写真にフェードすることができるようにする方法があるのだろうかと思います。ありがとう! – PF1

5

まず、コードを約7倍小さく書き直すことができます。ループやものを使う。あなたの問題をオン

私はそれはあなたが無限ループを持つとは何かを持っている疑いがある、いくつかのものをフェードタイマーの束のこと、セット。繰り返しタイマーが繰り返されタイマーが頻繁に作成されるため、使用されていない画像など、予期しない結果が発生します。

fadeOutとfadeInがどのように動作するのかわかりません。これらの呼び出しはアニメーションをキューに入れます。はブロックしません。実行!だから事実上、常にたくさんのものを待ち行列に入れています。いつも

また、あなたはあなたがこの効果を得るためにjQueryプラグインに見たいと思うかもしれません

+0

こんにちはmkoryak:ありがとうございます。それは非常に合理的ですが、これを修正するいくつかの方法がありますか?言い換えれば、フェードアウトした後にもう一方のフェードアウトを実行させますか? – PF1

2

をデバッグするために放火犯を使用してになります。そこには多くの "スライドショー"スタイルのプラグインがあります。たとえば、Cycleを参照してください。

+0

私の問題は、テキストのバックグラウンドでもっとうまく動作するようになっていました...サイクルはこれを行うことができますか? – PF1

0

私はこのスニペットを言いたいと思いました。通常の画像と同じように背景画像でも同じように動作するはずです。画像がたくさんある場合は、ページ読み込み時にそれらをすべてプリロードしないで、キューシステムを使用してください。

<script type="text/javascript"> 
     <? 
     $i = 0; 
     if ($handle = opendir('./images/background')) { 
      while (false !== ($file = readdir($handle))) { 
       if ($file != "." && $file != "..") { 
        echo "preloadimage_".$i." = new Image();\n\t"; 
        echo "preloadimage_".$i++.".src = \"/images/background/".$file."\";\n\t"; 
       } 
      } 
      closedir($handle); 
     } 
     ?> 
    </script> 
関連する問題