【问题标题】:Internal loop only runs once, containing loop runs endlessly内部循环只运行一次,包含循环无限运行
【发布时间】:2012-09-18 18:14:27
【问题描述】:

恐怕菜鸟问题。

我有一个运行和旋转时钟指针的循环和一个检查指针角度是否为 90、180、270 和 360 的内部循环。在这 4 个角度上显示相应的 div 及其兄弟删除。手永远循环和循环,这是我想要的,但角度检查只在整个 360 度中运行一次循环。当手通过角度时,它正确显示和删除 div,但在第一次之后不会继续时钟的旋转。

我显然在某个地方搞砸了,肯定会有更有效的方法来完成这一切。我正在使用 jQueryRotate.js 进行旋转。谢谢你的时间。

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

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    一旦角度达到 360 度,你不需要将它重置为 0 吗?

    http://jsfiddle.net/DHxBm/2/

    【讨论】:

    • 我认为它已经在这样做了。当我检查元素时,旋转似乎重置并再次从 0 开始,而不是转到 361、362 等。
    • 可能是因为旋转函数不能取大于 360 的角度,所以它从 0 开始,但角度的实际值将变为 361、362 等,所以没有一个 if 语句匹配。
    • 我已经尝试过 Gyan 的解决方案,将角度重置为 0 bu,从而停止完全运行角度检查。我会尝试把小提琴放在一起并发布。
    • 他的解决方案有点破。在您的原始代码中,在angle+=1; 之后添加ìf (angle > 360){ angle = 0; },它应该可以工作。
    • 这是一个正在运行的小提琴。它只是为了测试目的而加速的。 jsfiddle.net/DHxBm
    【解决方案2】:
    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);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-02
      • 2021-05-06
      • 2011-11-02
      • 2013-11-28
      • 1970-01-01
      相关资源
      最近更新 更多