2013-05-29 26 views
0

我有這樣的代碼應該爲幻燈片顯示生成一個計數器,然後在計數器中更改圖片和相應的數字顏色。但是,在幻燈片放映循環兩次之後,計數器更改爲display:none,然後每次幻燈片放映開始時都重新出現並消失。幻燈片計數器消失

//icons for newsreel guide 
for(i=0;i<document.getElementsByClassName("news").length;i++){ 
    var count=i+1; 
    $('#counter').append('<span class="count">'+count+'</span>'); 
} 
//newsreel script 
$(".news").hide(); 
setTimeout (function() { 
    var wait = $(".news:last").index()*12000+12000; 
    function newsreel(){ 
    var i=0; 
    (function showNews(elem){ 
     if(i==document.getElementsByClassName("count").length){ 
      i=0; 
     } 
     document.getElementsByClassName("count")[i].style.color="#000"; 
     elem.fadeIn(2000,function(){ 
      elem.delay(8000).fadeOut(2000,function(){ 
       document.getElementsByClassName("count")[i].style.color="#3159a0"; 
       i=i+1; 
       $(this).next().length && showNews($(this).next()); 
      }); 
     }); 
    }) 
    ($(".news:first")); 
    setTimeout (arguments.callee, wait); 
    }/*end newsreel()*/ 
    newsreel(); 
}, 2000); 

起初我還以爲是使用過時的arguments.callee,但我改變了這一切,它仍然發生在線索。有任何想法嗎?

+0

爲什麼你會使用棄用的代碼? –

+0

@Justin Morgan很久以前,有人幫我做了這個幻燈片,那是他們當時的建議。 – user2434247

+0

那條線是幹什麼的? '$(this).next()。length && showNews($(this).next()); ' –

回答

0

我檢查你的代碼,問題是在這一行:

$(this).next().length && showNews($(this).next()) 

.next()是獲得一個同級。你的櫃檯是.news的兄弟姐妹。爲了解決你的問題,這樣做:

$(this).next().length && showNews($(this).next('.news')) 

將與類news選擇下一個兄弟。

+0

哇......我不敢相信我錯過了那麼簡單的事情。謝謝! – user2434247

0

我懷疑這是因爲你的showNews函數永遠不會運行。我認爲JavaScript引擎正在評估

(function showNews(elem){ 
    //... 
}) 

($(".news:first")); 

爲兩種不同的表現,而不是傳遞$(".news:first")作爲參數傳遞給showNews爲你打算。由於在行結束處的;在JS中是可選的,所以如果結果是有效的JavaScript,解析器將自動插入一個。在這種情況下,它定義了一個函數,但從不調用它,然後構建一個jQuery序列,但從不使用它。

嘗試刪除,兩者之間的回車:

(function showNews(elem){ 
    //... 
})($(".news:first")); 
+0

我認爲你在這裏做些什麼。我試圖刪除回車,我仍然有奇怪的行爲。然後,我嘗試在'.news:first'之後添加'#counter'和'.count'作爲參數,並且我得到了一些奇怪而有趣的結果。我認爲這是我可以添加額外的東西讓我的'#counter' div保持可見。 – user2434247

+0

@ user2434247 - 你使用什麼瀏覽器?這看起來像是可能在瀏覽器中進行不同解析的東西,尤其是考慮到Karl-AndréGagnon對代碼爲他工作的評論。 –

+0

我在Firefox中進行了大部分測試。我剛剛在Chrome中試過,結果相同。它通過幻燈片放映一次,然後在第一個週期後,櫃檯消失,所以也許他們沒有讓它運行足夠長? – user2434247