我想写一个函数,它会在图像数组之间改变。我对我有意义,但是当我在下面运行它时,第一个图像加载,然后第二个图像在某个点加载(透明度不会改变),然后什么都不会发生。这里是javascript代码:Javascript递归问题
var image1 = new Image();var image2 = new Image(); var image3 = new Image();
image1.src = "images/website6.jpg"; image2.src = "images/website7.jpg"; image3.src = "images/sunset.jpg";
var images = new Array("images/website6.jpg","images/website7.jpg","images/sunset.jpg");
/*document.slide.style.opacity = 1;
document.slide.stylebg.opacity = 0;*/
setTimeout(function() { fade(images,0); }, 2000);
function delay(arr,num)
{
document.slide.src = arr[num % 3];
document.slide.style.opacity = 1;
document.slidebg.style.opacity = 0;
document.slidebg.src = arr[(num+1)%3];
var number = num + 1;
setTimeout(function() { fade(arr,number); }, 2000);
}
function fade(arr,num)
{
/*alert('fadebefore ' + (document.slide.style.opacity).toString())*/
document.slide.style.opacity -= 0.1
/*alert('fade')*/
document.slide.stylebg.opacity += 0.1
if (document.slide.style.opacity == 0)
{
setTimeout(function() { delay(arr,num); }, 150);
}
else
{
setTimeout(function() { fade(arr,num); }, 1500);
}
}
HTML很简单。我有两堂课; style
和stylebg
。 style
坐在stylebg
的前面,然后根据需要更改不透明度和图像。 JavaScript似乎对我来说合乎逻辑,但它不能按预期工作。另外值得注意的是有3条评论。第一条评论(第3-4行)正在试图将阴影设置为他们应该在一开始时的样子。但是,如果我这样做,那么我会得到比上面更少的进展:第一个图像加载并且没有其他事情发生。第二个注释用于调试目的。如果我取消注释,则图像会在两次警报之间发生变化,这似乎表明图像变化是由不透明度变化引起的。
那么,任何人都可以解释为什么它没有达到我期望的效果吗?谢谢。
编辑:一些更多的代码:
HTML(这是受到影响的只是一部分):
<div style="position: relative;">
<img src="images/sunset.jpg" id="slide" />
<img src="images/website6.jpg" id="slidebg" />
</div>
CSS:
#slide{ display:block; margin-left:5; margin-right:auto; border: 1px solid black; z-index: 1; top: 0px; position: relative; } #slidebg{ display:block; margin-left:auto; margin-right:auto; border: 1px solid black; z-index: 0; top: 0px; position: absolute; }
显示HTML代码,请 – atlavis 2011-04-12 19:04:19
你的JavaScript代码是很奇怪..你使用Internet Explorer? – atlavis 2011-04-12 19:21:27
@atlavis不,我不使用Firefox。这是我第一次写javascript,这可能是为什么它很奇怪。我很乐意为你解释它的奇怪之处。 – Paul 2011-04-12 19:26:16