這是我嘗試編寫一個動態的onmouseout事件,它在鼠標離開div時緩慢地改變不透明度。 由於某些原因,遞歸和超時似乎不是工作屬性,並且不透明度的改變立即完成。Javascript遞歸超時調用
問題:是否有任何原因setTimeout()
不適用於遞歸?有沒有更好的方法來解決這個問題?
function hide(id)
{
if (gOpacity > .4)
{
gOpacity -= .1;
document.getElementById(id).style.opacity = gOpacity;
setTimeout(hide(id),1000)
}
else
{
gOpacity = 1.0
}
}
的可能重複[爲什麼當我使用的setTimeout方法立即執行?](http://stackoverflow.com/questions/7137401/why-is-the-method-executed-immediately-when-i-use-settimeout) – Quentin
下面的答案顯示了這個問題,但爲了增加討論,'setTimeout'可以很好地遞歸地工作。 setTimeout接受一個函數作爲它的第一個參數,而相反,你傳入一個函數調用的結果。 'hide(id)'立即調用該函數。刪除(),你很好。 – Alan
這個功能在很長一段時間內基本上是一個「淡入淡出」。是否有你沒有使用CSS轉換的原因?在現代瀏覽器上,CSS動畫是硬件加速的。 – Alan