繁体   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