结合超时改变颜色



我有一个超时时间间隔,并希望改变hop1和hop2的每个间隔的颜色。在1000ms、900ms、800ms等时间颜色变化。为什么我的代码不能工作?

                var interval = 1000;
                var change   = 1;
                function callback() {
                   interval -= 100; 
                              if (change = 1)
                   {
                     mainContent1 = document.getElementById("hop1");
                     mainContent1.style.backgroundColor = "#FFFF99";
                     mainContent2 = document.getElementById("hop2");
                     mainContent2.style.backgroundColor = "#FFFFFF";
                     change += 1;
                   }
                   else if (change = 2)
                   {
                     mainContent2 = document.getElementById("hop2");
                     mainContent2.style.backgroundColor = "#FFFF99";
                     mainContent1 = document.getElementById("hop1");
                     mainContent1.style.backgroundColor = "#FFFFFF";
                     change = 1;
                   }
                    setTimeout( callback, interval, change);
                 }
            setTimeout( callback, interval, change);

将代码更改为以下内容,并确保在达到预期间隔后停止调用setTimeout:

            var interval = 1000;
            var change   = 1;
            function callback() {
               interval -= 100; 
                          if (change == 1)
               {
                 mainContent1 = document.getElementById("hop1");
                 mainContent1.style.backgroundColor = "#FFFF99";
                 mainContent2 = document.getElementById("hop2");
                 mainContent2.style.backgroundColor = "#FFFFFF";
                 change += 1;
               }
               else if (change == 2)
               {
                 mainContent2 = document.getElementById("hop2");
                 mainContent2.style.backgroundColor = "#FFFF99";
                 mainContent1 = document.getElementById("hop1");
                 mainContent1.style.backgroundColor = "#FFFFFF";
                 change = 1;
               }
                setTimeout( callback, interval);
             }
        setTimeout( callback, interval);

最新更新