2010-04-21 45 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需要在你的头一个脚本