遇到clearInterval的问题

时间:2018-11-16 18:16:47

标签: ajax setinterval clearinterval

我已经在这里看到了很多解决问题的方法,但是我的js脚本中找不到一个。 我需要使用setIterval函数发送数组的每个值,但是在发送最后一个数组的值时无法停止它。这是代码:

<input type="text" name="urldata" value="">
<button  class="button">SEND</button>


<script type="text/javascript">
    var myArray = ["DW,1,22", "AW,30,2", "DW,1,23", "DW,1,24", "DW,1,25", "DW,0,26"];

$(document).ready(function(){
    var connectionClosed = 1;

    $(".button").click(function(){
        var handle = setInterval(function () {  SEND(connectionClosed, myArray);    }, 300);        
    });


function SEND(){   

console.log("connectionClosed="+connectionClosed);

            if (typeof(myArray[0]) !== "undefined" && connectionClosed == 1) {

            connectionClosed = 0; // waiting for http://192.168.4.1:80/ server connection closed

                $.ajax({
                    method: "GET",
                    url: "http://192.168.4.1:80/",
                    data: { cmd: myArray[0]+"," },
                    complete: function(xhr, statusText){
                        myArray.shift(); //delete first value, ready for next value
                        connectionClosed = 1;
                    }
                }); 
            }
            else {
                stopinterval(handle);
                return false;

            }
}

function stopinterval(){
  clearInterval(handle); 
}

});
    </script>

1 个答案:

答案 0 :(得分:0)

问题与变量的范围有关。您需要将变量的声明移到clearInterval行可以引用它的位置。

$(document).ready(function(){
  var connectionClosed = 1;
  var handle; //  declare it here

  $(".button").click(function(){
    handle = setInterval(function () {  SEND(connectionClosed, myArray); }, 300);        
  });