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