Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.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 间隔在清除后开始两次_Javascript_Jquery - Fatal编程技术网

Javascript 间隔在清除后开始两次

Javascript 间隔在清除后开始两次,javascript,jquery,Javascript,Jquery,我正在尝试创建一个间隔并发送请求。它将以单击开始,以单击停止。开始和停止工作都很好。但当您再次按下按钮启动时,停止间歇后,间歇开始两次。停止并再次启动后,每隔3分钟启动一次 这是我的密码: var running=0 var pathArray = window.location.pathname.split( '.html' ); var pathArray = pathArray.reverse(); var pathArray = pathArray .join(''); var path

我正在尝试创建一个间隔并发送请求。它将以单击开始,以单击停止。开始和停止工作都很好。但当您再次按下按钮启动时,停止间歇后,间歇开始两次。停止并再次启动后,每隔3分钟启动一次

这是我的密码:

var running=0
var pathArray = window.location.pathname.split( '.html' );
var pathArray = pathArray.reverse();
var pathArray = pathArray .join('');
var pathArray= pathArray .split('/');
var bidnum=pathArray[3];
    $(document).ready(function(){

        $('body').append("<div id=\"cdjs\" style=\"position: absolute; top: 30px; background-color: gray; box-shadow: 0px 0px 0px 3px; left: 30px;\">Click to start</div>");
        $('#cdjs').click(letswin); 

    });

    function checkandbid(){
            if(running==1){
                $.get("http://www.bigibid.com/LiveResponder/LR.bid?_as="+bidnum, function(data){
                    Marray = data.split("'te':'")
                    time = Marray[1].split("'")
                    time = time[0]
                    $('#cdjs').html(time);
                    if(time < 2 && able==1){
                            able=0;
                            $('#ctl00_ContentPlaceHolder1_ibBid').click();
                    }else{
                        able=1;
                    }
                });
            }
    }

        function letswin(){
            if(running==1){
                    running=0
                    clearInterval(IntRun);
                    delete IntRun;
                    $('#cdjs').html('Click to start'); 
            }else if(running==0){
                running++
                delete IntRun;
                clearInterval(IntRun);
                var IntRun = setInterval(checkandbid, 300);
                }

        }

    function bidders(){
    }
var running=0
var pathArray=window.location.pathname.split('.html');
var pathArray=pathArray.reverse();
var pathArray=pathArray.join(“”);
var pathArray=pathArray.split('/');
var bidnum=pathArray[3];
$(文档).ready(函数(){
$('body')。追加(“单击开始”);
$('#cdjs')。单击(letswin);
});
函数checkandbid(){
如果(运行==1){
$.get(”http://www.bigibid.com/LiveResponder/LR.bid?_as=“+bidnum,函数(数据){
Marray=data.split(“'te':'”)
时间=Marray[1]。拆分(“”)
时间=时间[0]
$('#cdjs').html(时间);
if(时间<2&&able==1){
able=0;
$('#ctl00_ContentPlaceHolder1_ibBid')。单击();
}否则{
able=1;
}
});
}
}
函数letswin(){
如果(运行==1){
运行=0
清除间隔(IntRun);
删除IntRun;
$('#cdjs').html('点击开始');
}else if(正在运行==0){
运行++
删除IntRun;
清除间隔(IntRun);
var IntRun=设置间隔(checkandbid,300);
}
}
功能投标人(){
}

以下是您的
IntRun
变量仅在
letswin
函数中起作用,并且每次调用该函数时都将重置为未定义的值


您需要将其声明移到该函数之外,以便在调用之间记住其值。

您的
IntRun
变量仅在
letswin
函数内起作用,并且每次调用该函数时都将重置为未定义的值


您需要将其声明移到该函数之外,以便在调用之间记住其值。

您的
letswin
函数声明一个名为
IntRun
局部变量。它不会在函数调用之间保持不变。您需要将其移出包含范围,以便在调用之间对其进行维护


还请注意,对于使用
var
声明的变量,您不使用
delete
。仅适用于对象属性。(JavaScript中的
delete
操作符的目的是从对象中删除属性。)

您的
letswin
函数声明一个名为
IntRun
局部变量。它不会在函数调用之间保持不变。您需要将其移出包含范围,以便在调用之间对其进行维护

还请注意,对于使用
var
声明的变量,您不使用
delete
。仅适用于对象属性。(JavaScript中的
delete
操作符的目的是从对象中删除属性。)

这如何

var running = false;
var checkandbidInterval;

function letswin(){
    if (checkandbidInterval) {
        clearInterval(checkandbidInterval);
    }

    if (running){
        running = false;

        $('#cdjs').html('Click to start');

    }
    else {
        running = true;

        checkandbidInterval = setInterval(checkandbid, 300);
    }

}
注意变量的变化,因为您将intRun作为局部范围变量而不是全局范围变量运行

此外,如果要检查变量的0或1,则只需使用布尔值即可(true或false)。

这如何

var running = false;
var checkandbidInterval;

function letswin(){
    if (checkandbidInterval) {
        clearInterval(checkandbidInterval);
    }

    if (running){
        running = false;

        $('#cdjs').html('Click to start');

    }
    else {
        running = true;

        checkandbidInterval = setInterval(checkandbid, 300);
    }

}
注意变量的变化,因为您将intRun作为局部范围变量而不是全局范围变量运行


此外,如果要检查变量的0或1,则只需使用布尔值即可(true或false)。

谢谢您的帮助。效果不错。我会在几分钟内接受你的回答。@T.J.Crowder你知道,我知道,但我的文本可能更容易理解;-)谢谢你的帮助。效果不错。我会在几分钟内接受你的回答。@T.J.Crowder你知道,我知道,但我的文本可能更容易理解;-)