簡體   English   中英

setInterval問題

[英]Problem with setInterval

我在'click'事件上遇到setInterval問題。 我已經產生了一個隱藏的div。 但是我希望同步生成和淡入,並且只運行淡入。

 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';
                }

這段代碼對我來說毫無意義:

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之類的庫來制作動畫,因為這樣做會更輕松地使用動畫並使它跨瀏覽器工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM