我怎样才能停止这种闪烁效果呢?

How can I stop this blinking effect?

本文关键字:闪烁      更新时间:2023-09-26

我有一个Javascript函数,通过替换按钮图像来循环创建闪烁效果。

function blinkit() {
   intrvl = 0;
   for (nTimes = 0; nTimes < 500; nTimes++)  {
      intrvl += 1000;
      t = setTimeout("document.getElementById('imgshowreport').src='report_icon.png';",intrvl);
      intrvl += 1000;
      t = setTimeout("document.getElementById('imgshowreport').src='report_icon2.png';",intrvl);
   }
}

这是为了达到目的,但是当按钮被点击时,我希望闪烁停止。如何在不刷新整个页面的情况下完成此操作?

使用break来终止循环是无用的,因为你的循环已经结束,并且在用户可以点击按钮之前设置了所有的超时。

最好使用一次setInterval,而不是将数百个单独的超时排队。然后你就可以一举结束间隔时间。

你也应该不是使用字符串代码,而是一个函数:

var myInterval = null;
function blinkit() {
  var i = 0;
  myInterval = setInterval(function() {
     document.getElementById('imgshowreport').src = (i % 2) ? 'report_icon2.png' : 'report_icon.png';
     i++;
  }, 1000);
}
document.getElementById('imgshowreport').onclick = function() {
   if (myInterval != null) {
      clearInterval(myInterval);
      myInterval = null;
      document.getElementById('imgshowreport').src = 'report_icon.png';
   }
};

我还没有测试它的拼写错误,但基本逻辑是正确的。

可以使用break语法

break;

nTimes = 500;

尝试中断http://www.w3schools.com/js/js_break.asp