简体   繁体   English

setInterval问题

[英]Problem with setInterval

I have a problem with setInterval on a 'click' event. 我在'click'事件上遇到setInterval问题。 Im already spawning a hidden div. 我已经产生了一个隐藏的div。 But I want spawn and fade in synced and only run the fade in ones. 但是我希望同步生成和淡入,并且只运行淡入。

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

This piece of code makes no sense to me: 这段代码对我来说毫无意义:

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

There are multiple things wrong with it. 它有很多问题。

  1. You aren't setting a time for setInterval() . 您没有为setInterval()设置时间。
  2. You aren't saving the return value from setInterval() . 您没有保存setInterval()的返回值。
  3. You aren't passing anything to clearInterval() . 您没有将任何内容传递给clearInterval() It should be passed the return value from setInterval() . 应该从setInterval()返回返回值。 It won't do anything the way you have it. 它不会按照您的方式做任何事情。
  4. This line isn't legal javascript: F hiddenElement.style.opacity += 1; 这行不是合法的javascript: F hiddenElement.style.opacity += 1;
  5. I can't understand why you would setInterval() and then immediately clearInterval() 我不明白为什么您会先设置setInterval()然后立即clearInterval()
  6. Adding 1 to the opacity in a timer interval isn't going to accomplish anything. 在计时器间隔中将不透明度加1不会完成任何操作。 That's just going to make it visible in one giant step. 这只是一步之遥就可以看到它。
  7. Manipulating opacity directly won't work in some versions of IE. 直接操作opacity在某些版本的IE中将无法使用。
  8. You're using document.getElementById('hiddenElement') in one place and hiddenElement in another place. 您在一个地方使用document.getElementById('hiddenElement') ,在另一个地方使用hiddenElement If hiddenElement is valid, use that both places. 如果hiddenElement有效,则在这两个地方都使用。 If not, use document.getElementById('hiddenElement') both places. 如果不是,则在两个地方都使用document.getElementById('hiddenElement')

If you describe in more detail what you're really trying to accomplish with this code, folks might be able to help you come up with correct code. 如果您更详细地描述此代码真正要完成的工作,那么人们也许可以帮助您提出正确的代码。

I would highly recommend that animation be done with a library like jQuery or YUI as it's way, way easier to use and make it work cross-browser. 我强烈建议使用jQuery或YUI之类的库来制作动画,因为这样做会更轻松地使用动画并使它跨浏览器工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM