调试JavaScript时序事件

时间:2011-05-02 12:17:33

标签: javascript debugging

我遇到了这个JavaScript脚本的问题。我已经尝试了很多东西来让它发挥作用。当前的警报是出于调试目的,似乎没有发生。

请帮忙吗?

function checkTime(this_time){
var the_string = "checkTime("+this_time+")";
var now = ((new Date()).getTime());
if(parseInt(now) >= parseInt(this_time)){
    document.write("TIMEUP!");
}
alert(now);
alert(this_time);
var t = setTimeout(the_string,300);
}

var the_time = (((new Date()).getTime())+19000);
var the_string = "checkTime("+the_time+")";
var t = setTimeout(the_string,300);

谢谢,

威尔

4 个答案:

答案 0 :(得分:1)

您应该使用setTimeout封闭而不是字符串。

var now = new Date().getTime();
setTimeout(function(){
  //your Javascript code here
  //"now" can be used here as a closure
}, 300);

答案 1 :(得分:1)

这是一个更安全,更自包含的版本。加载后的document.write将完全清除页面

http://jsfiddle.net/mplungjan/Zt5k7/

window.onload=function() {
  var timer = function (endTime) {
    var end = new Date(endTime);
    var tId;
    this.checkTime=function(){
      var now = new Date();
      document.getElementById("msg").innerHTML=now.toLocaleString();
      if (now.getTime()>=end.getTime()) {
        document.getElementById("msg").innerHTML="TIME's UP!";
        clearInterval(tId);
      }
    }
    tId = setInterval(this.checkTime,300);
  }(new Date().getTime()+5000);
}

或适当的倒计时http://jsfiddle.net/mplungjan/Zt5k7/1/

window.onload=function() {
  var timer = function (endTime) {
    var end = new Date(endTime);
    var tId;
    this.checkTime=function(){
      var now = new Date();
      document.getElementById("msg").innerHTML=now.toLocaleString();
      var diff = end.getTime()-now.getTime()
      if (diff >= 1) document.getElementById("msg").innerHTML=parseInt(diff/1000)+1;
      else {
        document.getElementById("msg").innerHTML="TIME's UP!";
        clearInterval(tId);
      }
    }
    tId = setInterval(this.checkTime,300);
  }(new Date().getTime()+9000);
}

答案 2 :(得分:1)

好像你正在寻找倒计时? 见this fiddle。代码简化为:

var bench  = 19000 + new Date().getTime(),
    timer  = setInterval(
               function(){ 
                 checkTime(bench); 
               }
               , 1000
             );

function checkTime(this_time){
    var check = new Date - this_time;
    if(check>=0){
        alert('time\'s up!');
        clearInterval(timer);
    }
}

答案 3 :(得分:0)

我认为代码可以更简单地工作。

function checkTime(this_time){
    var now = ((new Date()).getTime());
    if((now - this_time) >= 0){
        document.write("TIMEUP!");
        window.clearInterval(timer);
    }
}

var t_t = (((new Date()).getTime())+19000);

var timer = window.setInterval(function(){ 
    checkTime(t_t); }
, 300);

干杯!