Javascript 内部循环只运行一次,包含的循环无休止地运行
恐怕没有问题 我有一个循环,可以运行和旋转时钟的指针,还有一个内部循环,可以检查指针的角度是否为90、180、270和360。在这4个角度上,将显示相应的div,并删除其同级。我想要的是手的循环和循环,但是角度检查只在整个360度循环一次。当指针通过角度时,它正确地显示和删除div,但在时钟第一次旋转后不会继续 我显然在某个地方搞砸了,肯定会有更有效的方法来做这一切。我正在使用jQueryRotate.js进行旋转。谢谢你抽出时间Javascript 内部循环只运行一次,包含的循环无休止地运行,javascript,jquery,Javascript,Jquery,恐怕没有问题 我有一个循环,可以运行和旋转时钟的指针,还有一个内部循环,可以检查指针的角度是否为90、180、270和360。在这4个角度上,将显示相应的div,并删除其同级。我想要的是手的循环和循环,但是角度检查只在整个360度循环一次。当指针通过角度时,它正确地显示和删除div,但在时钟第一次旋转后不会继续 我显然在某个地方搞砸了,肯定会有更有效的方法来做这一切。我正在使用jQueryRotate.js进行旋转。谢谢你抽出时间 jQuery(document).ready(function(
jQuery(document).ready(function() {
var angle = 0;
setInterval(function() {
jQuery("#hand").rotate(angle);
function movehand() {
if (angle == 90) {
jQuery("#intervention").fadeIn().css("display","block").siblings().css("display","none");
} else if (angle == 180) {
jQuery("#management").fadeIn().css("display","block").siblings().css("display","none");
} else if (angle == 270) {
jQuery("#prevention").fadeIn().css("display","block").siblings().css("display","none");
} else if (angle == 360) {
jQuery("#reaction").fadeIn().css("display","block").siblings().css("display","none");
} else {
movehand;
}
};
movehand();
angle+=1;
},10);
});
一旦角度达到360度,您不需要将其重置为0吗
我以为它已经在这样做了。当我检查元素时,旋转似乎重置并再次从0开始,而不是从361、362等开始。可能是因为旋转函数的角度不能大于360,所以它从0开始,但角度的实际值将为361、362,我尝试了Gyan的解决方案,将角度重置为0 bu,从而停止完全运行角度检查。我会试着编一把小提琴,然后把它贴出来。他的解决方案有点失败了。在原始代码中,在
angle+=1之后添加f(angle>360){angle=0;}
代码>而且它应该可以工作。这里有一个运行的小提琴。它只是为了测试而加速的。
jQuery(document).ready(function(){
var angle = 0;
setInterval(function(){
jQuery("#hand").rotate(angle);
function movehand(){
if (angle == 90) {
jQuery("#intervention").fadeIn().css("display","block").siblings().css("display","none");
} else if (angle == 180) {
jQuery("#management").fadeIn().css("display","block").siblings().css("display","none");
} else if (angle == 270) {
jQuery("#prevention").fadeIn().css("display","block").siblings().css("display","none");
} else if (angle == 360) {
jQuery("#reaction").fadeIn().css("display","block").siblings().css("display","none");
angle=0;
} else {movehand;}
};
angle+=1;
},10);
});