setInterval问题

时间:2011-09-08 14:50:30

标签: javascript

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

1 个答案:

答案 0 :(得分: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')这两个地方。
  9. 如果您更详细地描述了使用此代码实现的目标,那么人们可能会帮助您提供正确的代码。

    我强烈建议使用像jQuery或YUI这样的库来完成动画,方式更容易使用并使其跨浏览器工作。