Javascript 间隔在清除后开始两次
我正在尝试创建一个间隔并发送请求。它将以单击开始,以单击停止。开始和停止工作都很好。但当您再次按下按钮启动时,停止间歇后,间歇开始两次。停止并再次启动后,每隔3分钟启动一次 这是我的密码: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
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你知道,我知道,但我的文本可能更容易理解;-)