每隔y分钟显示div几秒钟

时间:2017-10-27 12:07:18

标签: javascript html angularjs

我正在使用AngularJS所以答案可能是AngularJS或纯JS,并不重要。 假设它是AngularJS,我有一个名为isShowDiv的参数,它将根据这种情况控制两个div之间的切换:

每1分钟显示第一个div,持续10秒。

我尝试在间隔内使用间隔,而不是工作。我的代码现在看起来像一个大混乱,因为我玩了很多。所以你甚至可以忽略它(它是用Typescript写的):

        var ppInterval1 = this.$interval(function () {
                var started = Date.now();
                var interval = this.$interval(function () {
                    // for 10 seconds
                    if (Date.now() - started > 10000) {
                        // and then pause it
                        this.$interval.cancel(ppInterval1);
                    } else {
                        this.isShowDiv= !this.isShowDiv;
                    }
                }.bind(this), 100);
        }.bind(this), 1000);

感谢任何帮助,谢谢!

4 个答案:

答案 0 :(得分:1)

你可以尝试这样的事情 -

    $interval(function() {        
        showDiv();
        $timeout(function() {
            clearDiv();
        }, 10*1000);        
    }, 60*1000);

您可以在此处查看:http://plnkr.co/edit/nGKsOBmlxtU1hYFdTXeC?p=preview

答案 1 :(得分:1)

以下是该代码应该是什么样子的简化示例:

    var show;
    function execInterval() {
            var interval = setInterval(function () {
                    show = true;
                    setTimeout(function () {
                            show = false;
                            clearInterval(interval);
                    }, 10000)
                    console.log(show);
            }, 1000);
    }

    execInterval();

答案 2 :(得分:0)

$(document).ready(function() {
  var i = 1 ;
  
  setInterval(function(){
    i += 1 ;
    
    if (i == 2) {
      $(".thisClass").hide() ;
    }
    else if (i == 5) {
      i = 0 ;
      $(".thisClass").show() ;
    }   
  }, 1000);
}) ;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="thisClass">Will be hidden</div>

答案 3 :(得分:0)

我采用了Mario的方法,并添加了一个缺失的部分 - 这将防止由于超时而导致您丢失部分时间的情况,这是我的答案(在您加载页面时调用它):

    handleShow= () => {
        var i = 1;
        var extra = 0;
        var holdFor = 10;
        var showEvery = 60
        this.$interval(() => {
            i += 1;
            if (i == holdFor) {
                this.isShowDiv= false;
            }
            else if (i == showEvery+ extra) {
                i = 0;
                extra = holdFor;
                this.isShowDiv= true;
            }
        }, 1000);
    }