我想寫一個函數,它會在圖像數組之間改變。我對我有意義,但是當我在下面運行它時,第一個圖像加載,然後第二個圖像在某個點加載(透明度不會改變),然後什麼都不會發生。這裏是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