Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 每y分钟显示x秒的div_Javascript_Html_Angularjs - Fatal编程技术网

Javascript 每y分钟显示x秒的div

Javascript 每y分钟显示x秒的div,javascript,html,angularjs,Javascript,Html,Angularjs,我使用的是AngularJS,所以答案可能是AngularJS或纯JS,这并不重要。 假设是AngularJS,我有一个名为isShowDiv的参数,它将根据以下条件控制两个div之间的切换: 每1分钟播放一次第一个div,持续10秒。 我试着在间隔内使用间隔,但没有工作。我的代码现在看起来像一团乱麻,因为我经常使用它。因此,您甚至可以忽略它(它是用Typescript编写的): 感谢您的帮助,谢谢 你可以试试这样的东西- $interval(function() {

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

每1分钟播放一次第一个div,持续10秒。

我试着在间隔内使用间隔,但没有工作。我的代码现在看起来像一团乱麻,因为我经常使用它。因此,您甚至可以忽略它(它是用Typescript编写的):


感谢您的帮助,谢谢

你可以试试这样的东西-

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

您可以在这里看到工作:

下面是一个简化的代码示例:

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

    execInterval();
$(文档).ready(函数(){
var i=1;
setInterval(函数(){
i+=1;
如果(i==2){
$(“.thisClass”).hide();
}
else如果(i==5){
i=0;
$(“.thisClass”).show();
}   
}, 1000);
}) ;


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


您需要使用间隔来每分钟调用函数。你已经知道了。在函数内部,显示div并使用超时函数,该函数将在10秒后再次隐藏div。@HerrDerb这将使每个div延迟5秒,间隔时间可能取决于超时时间?我不确定我的解释是否正确……)这将取决于他的角度代码,不管它是否是指令的单个实例。对于每个指令,这都应该有效。但是,他需要循环遍历所有实例,这取决于他没有添加到问题中的代码的其余部分。这样,你就不需要定义间隔,因为它在第一次运行时被清除,不再执行。@Tatarin实际上有个问题。显示第一个div(较长的一个)所需的时间会缩短,因为它会在每个间隔上消耗掉第二个div超时时间。假设我为原始div定义了2分钟,为第二个div定义了30秒,它是这样的:第一个时间是完美的(2分钟),然后是30秒,然后是1分30秒,然后第二个是30秒,然后是1分钟。。。依此类推。@DanielGreen如果它们共享同一个时间变量实例,则您是正确的。为了按顺序运行它,您必须以一种不会为单个实例实例化的方式构造代码来触发执行器(答案)。假设每个实例都是一个指令,则指令中会有一个
$scope.showDiv
,并在某个事件(单击、聚焦等)期间触发它@Tatarin这些不在指令上。我不知道现在该怎么办:)
    var show;
    function execInterval() {
            var interval = setInterval(function () {
                    show = true;
                    setTimeout(function () {
                            show = false;
                            clearInterval(interval);
                    }, 10000)
                    console.log(show);
            }, 1000);
    }

    execInterval();
    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);
    }