2011-09-08 64 views
0

我在'click'事件上遇到setInterval問題。我已經產卵了一個隱藏的div。但我想同步產卵和淡入淡出,只能淡入淡出。setInterval問題

var anchor = document.getElementById('anchor'); 
       var hiddenElement = document.getElementById('hiddenElement'); 
       var bkgFade = document.getElementById('bkgFade'); 

       anchor.addEventListener('click', spawnImage, false); 
       hiddenElement.addEventListener('click', despawnImage, false); 
       function spawnImage() { 
        setInterval(function() { 
         document.getElementById('hiddenElement').style.display = 'block'; 
         document.getElementById('bkgFade').style.visibility = 'visible'; 
         hiddenElement.style.opacity += 1.0; 
        } 1000); 


       } 

       function despawnImage() { 
        document.getElementById('hiddenElement').style.display = 'none'; 
        document.getElementById('bkgFade').style.visibility = 'hidden'; 
       } 
+0

這可能是挑剔的,但那裏有'F'是什麼意思? – pimvdb

+1

你不能使用像jQuery這樣的框架嗎?此外,您似乎沒有爲setInterval指定延遲,並且clearInterval應該將間隔的id作爲參數。 –

回答

3

這段代碼是沒有意義的我:

function spawnImage() { 
    setInterval(function() { 
     document.getElementById('hiddenElement').style.display = 'block'; 
     document.getElementById('bkgFade').style.visibility = 'visible'; 
     F hiddenElement.style.opacity += 1; 
    }); 
    clearInterval(); 
} 

有多種事情不對的地方。

  1. 您並未設定時間爲setInterval()
  2. 您不存儲從setInterval()返回的值。
  3. 你沒有通過任何東西clearInterval()。它應該通過setInterval()的返回值。它不會以你擁有的方式做任何事情。
  4. 此行是不合法的javascript:F hiddenElement.style.opacity += 1;
  5. 我不明白你爲什麼會setInterval(),然後立即clearInterval()
  6. 加1,在計時器的時間間隔不透明度是不會完成任何事情。這隻會讓它在一個巨大的步驟中顯現出來。
  7. 直接操作opacity將無法​​在某些版本的IE中工作。
  8. 您在一個地方使用document.getElementById('hiddenElement'),在另一個地方使用hiddenElement。如果hiddenElement有效,請使用這兩個地方。如果不是,則使用document.getElementById('hiddenElement')這兩個地方。

如果你更詳細地描述了你真的想用這段代碼完成什麼,那麼人們可能會幫助你拿出正確的代碼。

我強烈建議使用像jQuery或YUI這樣的庫來完成動畫,因爲它的使用方式更易於使用,並且可以跨瀏覽器使用。

+0

非常抱歉。我遺憾地向您發送了一段錯誤的代碼。 現在我已經編輯了像之前我嘗試了一些不同的技術。 我不在jQuery中做它的原因是因爲我正在學習javasript從學校項目的基礎知識。 – Oscar

+0

我真的不明白你想做什麼,但我的觀點6,7和8仍然是相關的觀察。不透明度是從0到1.0的一個小數,所以加1會立即將它從0移動到1,而沒有動畫。 – jfriend00

+0

此外,等待18小時回來,檢查答案,並告訴我們你輸入錯誤的代碼不會激勵人們想要幫助你。而且,第9點是你設置了一個間隔計時器,你永遠不會停止它。這將永遠增加不透明度。 – jfriend00