2012-01-22 7 views
0

私は、簡単なJavaScriptのスライドショーを作成するためのチュートリアルを追ったが、私は奇妙なバグを持っています...最初の2サイクルは完璧に動作しますが、カウンタはリセット後にスライドショーが前回を示す始まりますすばやくスライドして、正しいスライドをフェードインしようとします。これを引き起こす原因は何ですか?Javascriptのスライドショーサイクル罰金二回、バグ出し

私は3枚の(Image1.png名付け、Image2.png、およびImage3.png)の画像フォルダ内の私のシンプルなスライドショーのと、このように設定3つのdiv持っている:私のJavaScriptを有効にして

var nextImage; 
var imagesInShow; 
var currentImage; 
var currentSrc 
var nextSrc 

function changeImage() { 
    imagesInShow = "3"; 
    currentImage = $("#counter").html(); 
    currentImage = parseInt(currentImage); 


    if (currentImage == imagesInShow) { 
     nextImage = 1; 
    } 
    else { 
     nextImage = currentImage + 1; 
    } 

    currentSrc = $(".infront img").attr("src"); 
    nextSrc = "SlideShow/image" + nextImage + ".png"; 

    $(".behind img").attr("src", currentSrc); 

    $(".infront").css("display", "none"); 

    $(".infront img").attr("src", nextSrc); 

    $(".infront").fadeIn(1000); 

    $("#counter").html(nextImage); 

    setTimeout('changeImage()', 5000); 


} 

$(document).ready(function() { 
    changeImage(); 
}); 
のように見えます

<div id="SlideshowFeature"> 
     <div id="counter"> 
      3 
     </div> 
     <div class="behind"> 
      <img src="SlideShow/image1.png" alt="IMAGE" /> 
     </div> 
     <div class="infront"> 
      <img src="SlideShow/image1.png" alt="IMAGE" /> 
     </div> 
    </div> 

編集:

また、私のCSS

#SlideshowFeature 
{ 
text-align:center; 
margin: 0 auto; 
width:800px; 
background: #02183B; 
height:300px; 
float: left; 
overflow:hidden; 
display:inline; 

} 

#SlideshowFeature div 
{ 
    width: 800px; 
    height:300px; 
    position:absolute; 
} 

#counter 
{ 
    display:none; 
} 
+0

それはあなたのHTML構造に2 'image1.png'を持っていることを、通常のでしょうか? – ajax333221

+0

Aより説明質問のタイトルが良いだろう。それでも編集できます。 –

+0

スクリプトがうまく動作します。ここにcssを添付して問題の原因を調べ、ブラウザのバージョンを指定してください。 –

答えて

0

問題は(とないあなたのJSで)あなたのHTML構造であるように見える:

... 
<img src="SlideShow/image1.png" alt="IMAGE" /> 
... 
<img src="SlideShow/image1.png" alt="IMAGE" /> 
... 

私はあなたがimage1.pngを入れて、その後image2.png

+0

それはそうではありません。最初の2サイクルはので、これらのimgソースがすでに問題なくジャバスクリプトによって変更された細かい作業します。私はあなたの提案を無関係にテストしましたが、同じ問題がまだあります。しかし、ありがとう。 – kmc5117

0

.infrontが前にでなければならない意味だと思います.behindは後ろにする必要があります

.behind { 
     z-index: 1; 
    } 
    .infront { 
     z-index: 255; 
    } 

また、私はfadeInコールバックにロジックを再配置しました。

$(".infront").fadeIn(1000, function(){setTimeout('changeImage()', 2500)}); 

$("#counter").html(nextImage); 

//setTimeout('changeImage()', 2500); 

今のところよく見えます。

+0

まだ動作していません... 1枚目の画像が表示されていて2枚目の画像に問題なく表示されます... 1枚目の画像が点滅し、3枚目の画像がフェードインします。サイクルのうち、次のものがフェードインする間に前の画像をすばやく点滅させます。 – kmc5117

+0

はい、そうです。間違った答えを申し訳ありません。私の場合、欠陥はFFで時々のみ(30-50スライドに1回)発生します。 ChromeとIE 9では、再現性がありません。これは、コード内ではなく、むしろFF特有の視覚的欠陥であるということを意味します。 –

関連する問題