2010-04-21 44 views
0

我有以下JavaScript函數IE的JavaScript推理

function headerBanner(){ 
    var current = $('.bannerImages img:nth-child('+bannerIndex+')').css('display', 'none'); 
    if(bannerIndex== $('.bannerImages img').size()){ 
     bannerIndex= 1; 
    }else{ 
     bannerIndex= (bannerIndex*1)+1; 
    } 
    var next = $('.bannerImages img:nth-child('+bannerIndex+')').css('display', 'block'); 
} 

在地球上的每一個瀏覽器,用IE(8,7或更少)之外,上面的代碼是否正常工作。在Internet Explorer中,它正在經歷它並且沒有任何影響。我已經在函數的每一行都發出了提醒,即使在IE中,它們也都會被觸發,但橫幅並沒有改變。有什麼理由說這是爲什麼?

附加此功能的HTML如下:

<div class='bannerImages'> 
    <img src="FirstImage.jpg" /> 
    <img src="SecondImage.jpg" /> 
    <img src="ThirdImage.jpg" /> 
</div> 
+2

是否有一些原因,你不是簡單地使用hide()/ show()? – tvanfosson 2010-04-21 12:25:25

+0

嘗試定義bannerIndex,如var bannerIndex;在功能的開始! – 2010-04-21 12:46:59

+0

@tvanfosson Hide()/ show()在ie中沒有任何影響。 @aSeptik bannerIndex是在其他地方定義的,它在任何其他瀏覽器中工作得都很好。 – 2010-04-21 13:07:12

回答

0

試試這個:

DEMO:http://jsbin.com/ipudo/4

$(function(){ 
    $('.bannerImages img:gt(0)').hide(); 
    setInterval(function(){ 
     $('.bannerImages :first-child').fadeOut() 
     .next('img').fadeIn() 
     .end().appendTo('.bannerImages');}, 
     3000); 
});​ 
0

嘗試使用在IE8開發人員工具腳本調試程序,並把一些斷點檢查bannerIndex的價值。如果它可能不是數字,你可能想使用parseInt()將其轉換爲數字並且使用IsNaN()來確保它不是依靠算術運算來爲你規範化。

+0

我檢查了數字,他們都是數字,但由於某種原因在IE瀏覽器jQuery $('。bannerImages img').css('display')不會返回任何內容在其他瀏覽器中是這樣 – 2010-04-21 13:03:03

0

我發現hide()show()的一件事情是,有時候,如果將display設置爲none,show()將不起作用。所以,我總是創建元素,然後在文檔準備就緒時首先調用hide(0)。

此外,你檢查了的長度,以確保它不是0?

最後一件事,$('.bannerImages img').size()不是1,對吧?它將使意義,如果$('.bannerImages img').size()爲1和bannerIndex爲1,那麼當它通過你的headerBanner();

PS它不會改變任何東西:我敢肯定你會不會做一些簡單的錯誤,如bannerIndex從0開始而不是1 ...

哦,順便說一句,對於IE中的螢火蟲,其中U需要在你的頭一個腳本