0

我有一个 setTimeout 和 clearTimeout,其中 setTimeout 工作正常,但 clearTimeout 不工作,谁能帮助我?

代码:

<script type="text/javascript">
  var i = 0;
  var status = setTimeout(function () {
    if (i <= 2) {
      metrics_status();
      i++;
    } else {
      clearTimeout(status);
    };
  }, 3000);
</script>
<div id="ReloadMetrics"></div>
4

5 回答 5

0

看看给定的例子http://jsfiddle.net/jogesh_pi/qTGPT/

<div id="status"></div>

JS:

var i = 0;
var status = setInterval(function() {
    if (i <= 5) {
        //metrics_status();
        document.getElementById('status').innerHTML = i;
    } else {
      document.getElementById('status').innerHTML = "done";
      _clearTime();
    }
    i++;
  }, 1000);

function _clearTime(){
    return clearInterval(status);
}

希望这应该根据您的需要工作..

于 2013-02-08T04:24:02.467 回答
0

你应该像这样clearTimeout在外面使用setTimeout

var status;
if(status){ 
   clearTimeout(status);
}
status = setTimeout(function () { }

示例 1 示例 2

于 2013-02-08T04:08:25.933 回答
0

我假设你需要setInterval。它将以指定的时间间隔调用您的函数,直到您调用clearInterval

于 2013-02-08T04:13:10.363 回答
0

setTimeout函数只调用一次,如果它是递归的,那么你需要调用clearTimeout 要多次调用一个函数然后你使用setInterval然后你可以调用clearTimeout

例如http://www.w3schools.com/jsref/met_win_cleartimeout.aspsetTimeout and clearTimeout _

计时功能http://www.w3schools.com/js/js_timing.asp

于 2013-02-08T04:17:30.960 回答
0

我认为这会达到你的目的。请检查

<script type="text/javascript">
  var i = 0;
  var status;
  status = setTimeout(Fun, 3000);
  function Fun() {
    if (i <= 2) {
      metrics_status();
      i++;
      status = setTimeout(Fun, 3000);

    } else {
      //clearTimeout(status);
    };
  }
</script>
<div id="ReloadMetrics"></div>
于 2013-02-08T04:17:43.260 回答