0

I'm tying to create stop and start functions for a setinterval.

I have been trying everything but I can't seem to get it right!

this is my code:

function myStartFunction() {
var myVar = setInterval(function(){ myTimer() }, 6000);

function myTimer() {

    $.ajax({
      type:"post",
      url:"myphppage.php",
      datatype:"html",
      success:function(data)
      {  
         if(data!="")
         {



         }
      }
    });

}

}

function myStopFunction() {
    clearInterval(myVar);
}

and this is how I've been trying to call them (This is how I NEED to call them):

to start it:

myStartFunction();

and to stop it:

myStopFunction();

but this is not correct and I know it.

could someone please advise on this issue as I've practically been pulling my hair out!

Thanks in advance.

Jackson
  • 800
  • 16
  • 36

2 Answers2

4

Declare myVar as global (outside the functions), cause in your example myStopFunction can't see it.

var myVar;

function myStartFunction() {
    myVar = setInterval(function(){ myTimer() }, 6000);
}

function myTimer() {
    $.ajax({
      type:"post",
      url:"myphppage.php",
      datatype:"html",
      success:function(data)
      {  
         if(data!="")
         {
         }
      }
    });
}

function myStopFunction() {
    clearInterval(myVar);
}
Andrea Sessa
  • 838
  • 8
  • 16
2

Set myVar as a global variable like this

var myVar = 0;

function myStartFunction() {
  console.log('myStartFunction');
  myVar = setInterval(function(){ myTimer() }, 6000);

  function myTimer() {
    console.log('myTimer');
    /*
    $.ajax({
      type:"post",
      url:"myphppage.php",
      datatype:"html",
      success:function(data)
      {  
         if(data!="")
         {



         }
      }
    });
    */
    
    // FOR TEST
    myStopFunction();
  }

}

function myStopFunction() {
  console.log('myStopFunction');
  clearInterval(myVar);
}


// FOR TEST
myStartFunction();
Robiseb
  • 1,576
  • 2
  • 14
  • 17