我正在使用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);
感谢任何帮助,谢谢!
答案 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);
}