Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
函数中的Javascript clearInterval_Javascript_Jquery_Oop - Fatal编程技术网

函数中的Javascript clearInterval

函数中的Javascript clearInterval,javascript,jquery,oop,Javascript,Jquery,Oop,我不熟悉Javascript或jQuery中的OOP,我正在尝试清除间隔并停止间隔内的任何方法,它似乎与我下面所做的不兼容 function Timer() { var sec = $('.timer #second'); this.runTimer = function(_currentime) { var currentTimeing = parseInt($(_currentime).text()); this.timeInterval =

我不熟悉Javascript或jQuery中的OOP,我正在尝试清除间隔并停止间隔内的任何方法,它似乎与我下面所做的不兼容

function Timer() {
    var sec = $('.timer #second');

    this.runTimer = function(_currentime) {
        var currentTimeing = parseInt($(_currentime).text());
        this.timeInterval = setInterval(function() {
            $('.projects li span.second').text(currentTimeing++)
        }, 1000); 

        $("#stop").click(function() {
            // clear interval
            clearInterval(this.timeInterval);
        })
    }
}

var play = new Timer();

$("#start").click(function(){
    //console.log(this.runTimer())
    play.runTimer('#second');
})

您在不同函数的上下文中使用了
,这就是它不能正常工作的原因。尝试:

 function Timer() {

    var sec = $('.timer #second');

    this.runTimer = function(_currentime) {

      var currentTimeing = parseInt($(_currentime).text()), that = this;
      that.timeInterval = setInterval(function(){
        $('.projects li span.second').text(currentTimeing ++)
      }, 1000); 

      $("#stop").click(function(){
        // clear interval
        clearInterval(that.timeInterval);
      })
    }
  }

  var play = new Timer();

  $("#start").click(function(){
    //console.log(this.runTimer())
    play.runTimer('#second');
  })

我只是将引用保存到
that
变量中的correct
this
,以便以后可以使用它来清除间隔。

您在不同函数的上下文中使用
this
,这就是它不能正常工作的原因。尝试:

 function Timer() {

    var sec = $('.timer #second');

    this.runTimer = function(_currentime) {

      var currentTimeing = parseInt($(_currentime).text()), that = this;
      that.timeInterval = setInterval(function(){
        $('.projects li span.second').text(currentTimeing ++)
      }, 1000); 

      $("#stop").click(function(){
        // clear interval
        clearInterval(that.timeInterval);
      })
    }
  }

  var play = new Timer();

  $("#start").click(function(){
    //console.log(this.runTimer())
    play.runTimer('#second');
  })
function Timer() {

    var sec = $('.timer #second');
    var timeinterval;   // declare timeinterval variable here
    this.runTimer = function(_currentime) {

      var currentTimeing = parseInt($(_currentime).text());
      timeInterval = setInterval(function(){
        $('.projects li span.second').text(currentTimeing ++)
      }, 1000); 

      $("#stop").click(function(){
        // clear interval
        clearInterval(timeInterval);
      })
    }
  }

  var play = new Timer();

  $("#start").click(function(){
    //console.log(this.runTimer())
    play.runTimer('#second');
  })

我只是将引用保存到
that
变量中的correct
this
,这样我以后就可以用它来清除interval了。

不需要
that。timeInterval
我只需要将它设为一个正常的var。实际上,有了这个代码,根本就没有必要,但是,也许作者有一些进一步的计划来开发这段代码:)根本不需要
那个。时间间隔
,我只想把它变成一个普通的变量。事实上,有了这段代码,根本没有必要,但也许作者有一些进一步的计划来开发这段代码:)
function Timer() {

    var sec = $('.timer #second');
    var timeinterval;   // declare timeinterval variable here
    this.runTimer = function(_currentime) {

      var currentTimeing = parseInt($(_currentime).text());
      timeInterval = setInterval(function(){
        $('.projects li span.second').text(currentTimeing ++)
      }, 1000); 

      $("#stop").click(function(){
        // clear interval
        clearInterval(timeInterval);
      })
    }
  }

  var play = new Timer();

  $("#start").click(function(){
    //console.log(this.runTimer())
    play.runTimer('#second');
  })