【问题标题】:Call Function repeatedly for fade-in and fade-out JQueryJQuery 的淡入淡出重复调用函数
【发布时间】:2018-02-01 07:37:09
【问题描述】:

我有一组单词,我想连续淡出和淡入。我对 JS 很陌生,我无法弄清楚。

我的代码如下:

animate_loop = function(){
        var showText = ["Security","Mobile/Wireless","Cloud/Database","PC/Storage"]
        $.each(showText, function(i, val) {
        setTimeout(function() {
            $('#animate').fadeOut("slow", function() {
                $(this).text(val).fadeIn("slow");
            });
        }, i * 3000);
        });

setInterval(function(){animate_loop();},5000)

使用这段代码,函数在数组showText 中循环的速度非常快,我想知道是否还有其他没有setInterval 的方法来实现这一点。可能只是无限地调用animate_loop 函数,我认为这是不可取的。所以欢迎任何建议。

【问题讨论】:

  • 我个人的建议:完全避免使用 JavaScript。 CSS 可以使用 keyframe animation 自行处理这一切。
  • 查看这个 CSS 解决方案 -> stackoverflow.com/questions/23985018/…
  • 我需要在我的 HTML 页面上的同一位置动画四个单词。我不想创建四个<div>。我不填写 CSS 会帮助我。

标签: javascript jquery


【解决方案1】:

没有 setInterval 的其他方法

是的,我在这里所做的是使用回调来保持恒定链运行。 基本上是fadeIn/fadeOut,在fadeOut上重新运行。

$(function () {

  var showText = ["Security","Mobile/Wireless",
  "Cloud/Database","PC/Storage"];

  var 
    showNum = 0,
    $showText = $('.showtext');

  function doShow() {
    $showText.text(showText[showNum]);
    $showText.fadeIn('slow', function () {
      $showText.fadeOut('slow', function () {
        //lets make it so it wraps back to the start
        showNum = (showNum + 1) % showText.length; 
        doShow();
      });
    });
    
  }
  
  doShow();
});
.showtext {
  font-size: 24pt;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


<div class="showtext">
</div>

【讨论】:

  • 考虑至少对您的答案提供一些最低限度的解释。在当前的形式中,您基本上只是在说“这是您的代码:”,而 OP(或未来的读者)没有任何方式可以理解或从中学习。
  • 100%。这正是我想要的。非常感谢@Keith
  • 我已经看到了很多帖子,其中只有他们想要的文字说明以及不言自明的代码。我已经清楚地提到了我在寻找什么。如果你不喜欢我提出问题的方式,我很抱歉@Santi
  • @KrishnangKDalal 我的批评是这个答案没有提供上下文,而不是你的问题。
  • @Santi 好点,但我首先看看这是否是 OP 想要的。现在我将添加一些额外的细节,我知道这是他想要的。如果这不是他需要的,那么提前做很可能会浪费我的时间。如果不是你看到的,我可能已经删除了。希望这是有道理的。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-10
  • 1970-01-01
  • 2012-12-22
相关资源
最近更新 更多