【问题标题】:setTimeout order设置超时顺序
【发布时间】:2012-11-12 22:47:24
【问题描述】:

我猜setTimeout() 有问题。

您可以访问我的网页以查看我的位置:http://verbum.xtrweb/soon.php

问题是我有 2 个文本字段。

  1. “动词”与id="Verbum"
  2. 使用id="forget"“忘记单次搜索”

我想在小字典掉落后应用淡入效果(请参阅上面的我的网站链接,以便您理解)。我也更改了函数的名称和变量,但唯一发生的事情是只有一个文本淡入,这取决于一个在另一个之下的顺序。不淡入的那个甚至都没有出现。希望你能理解并找到答案。谢谢。

<script type="text/javascript">
  var opac = 0.0;
  var alpha = 0;

  function init() {
    var elem = document.getElementById("Verbum");
    elem.style.display = 'inline';
    elem.style.filter = "alpha(opacity = " + alpha + ")";
    elem.style.opacity = opac;

    setTimeout("fadein()", 8500);
  }

  function fadein() {
    var elem = document.getElementById("Verbum");

    opac = opac + 0.1;
    alpha = parseInt(opac * 100);
    elem.style.opacity = opac;
    elem.style.filter = "alpha(opacity = " + alpha + ")";

    if (opac < 1.0) {
      //Change the 50 to adjust the speed. The higher the number, the slower the fade
      setTimeout("fadein()", 30);
    }

  }
  window.onload=init;
</script>

这是第二个&lt;script&gt; 块:

<script type="text/javascript">
  var opac = 0.0;
  var alpha = 0;

  function init() {
    var eleme = document.getElementById("forget");
    eleme.style.display = 'inline';
    eleme.style.filter = "alpha(opacity = " + alpha + ")";
    eleme.style.opacity = opac;

    setTimeout("fadein()", 7500);
  }

  function fadein() {
    var eleme = document.getElementById("forget");

    opac = opac + 0.1;
    alpha = parseInt(opac * 100);
    eleme.style.opacity = opac;
    eleme.style.filter = "alpha(opacity = " + alpha + ")";

    if (opac < 1.0) {
      // Change the 50 to adjust the speed. The higher the number, the slower the fade
      setTimeout("fadein()", 30);
    }

  }

  window.onload = init;
</script>

【问题讨论】:

  • 快速说明:易于阅读的代码更有可能促进解决方案。请注意对缩进和间距所做的特定更改,因为它们大大提高了代码的可读性。此外,这只是一个猜测,但您不能以这种方式设置两个 onload 函数。将它们组合成一个初始化函数。
  • 您的网站链接无效?
  • verbum.xtrweb/soon.php 还是不行
  • 完全正确。它的:verbum.xtrweb.com

标签: html css settimeout


【解决方案1】:

问题是您一次只能将一个函数分配给window.onload。最后一个总是优先于第一个。

您可以使用window.addEventListener 来告诉浏览器在页面加载时运行您的代码,而不是使用window.onload。你可以这样使用它。

window.addEventListener('load', function(){
    var eleme = document.getElementById("forget");
    eleme.style.display = 'inline';
    eleme.style.filter = "alpha(opacity = " + alpha + ")";
    eleme.style.opacity = opac;

    setTimeout("fadein()", 7500);
}, false);

您需要复制并粘贴两次,一次用于“忘记”,一次用于“Verbum”。

另外,我建议更改 fadein 函数的名称,或者将要淡出的元素作为参数传递。否则,您的代码将简单地运行最后一个淡入淡出函数,“忘记”或“动词”将正常工作,而另一个则不会。

【讨论】:

  • 对于我的回答,我强烈建议您使用 jQuery 库。处理“加载”事件以及淡入淡出非常容易。例如,$('#forget').fadeIn();
  • 谢谢!像魅力一样工作!惊人的社区!我是新手,每天都在学习!
  • 你好胡安马。很高兴听到它对你有用。请单击此答案左侧的“勾号”以表明它对您有用。将来可能在 Google 中找到此问题的任何其他人也可能会从中受益。它还会为您提供一些接受答案的声誉积分。
  • 但是,我需要添加第三个元素,并且我已经更改了函数 ID,但是最后一个元素不会淡入,只是像往常一样弹出。
  • 仔细检查所有 ID。确保您定位正确的元素。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-04
  • 2015-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多