Javascript 如何让函数'clearInterval'本身?
在我的代码中,我将此函数称为:Javascript 如何让函数'clearInterval'本身?,javascript,ajax,setinterval,clearinterval,Javascript,Ajax,Setinterval,Clearinterval,在我的代码中,我将此函数称为: function call_bid_button(id) { bid_button(id); var refreshIntervalId = setInterval(function(){bid_button(id)},1000); } 如您所见,它调用函数bid_button(),并为其设置一个间隔 我想要bid\u按钮()为自己激活clearInterval()。这里有bid\u按钮(): 如您所见,我试图从另一个函数调用clearInter
function call_bid_button(id)
{
bid_button(id);
var refreshIntervalId = setInterval(function(){bid_button(id)},1000);
}
如您所见,它调用函数bid_button()
,并为其设置一个间隔
我想要bid\u按钮()
为自己激活clearInterval()
。这里有bid\u按钮()
:
如您所见,我试图从另一个函数调用clearInterval()
。显然,这是行不通的。但正确的方法是什么
谢谢将refreshIntervalId
设置为全局变量,或者至少在这两个函数的范围内
var refreshIntervalId;
function call_bid_button(id)
{
bid_button(id);
refreshIntervalId = setInterval(function(){bid_button(id)},1000);
}
function bid_button(id)
{
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200 && xmlhttp.responseText=='')
{
document.getElementById("bid_button").innerHTML=xmlhttp.responseText;
clearInterval(refreshIntervalId);
}
}
xmlhttp.open("GET","the_bid_button.php?id="+id,true);
xmlhttp.send();
return false;
}
将refreshIntervalId
设置为全局变量,或至少在两个函数的范围内
var refreshIntervalId;
function call_bid_button(id)
{
bid_button(id);
refreshIntervalId = setInterval(function(){bid_button(id)},1000);
}
function bid_button(id)
{
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200 && xmlhttp.responseText=='')
{
document.getElementById("bid_button").innerHTML=xmlhttp.responseText;
clearInterval(refreshIntervalId);
}
}
xmlhttp.open("GET","the_bid_button.php?id="+id,true);
xmlhttp.send();
return false;
}
当这一切结束时,只要你不再打电话,它就结束了。如果你是
如果计时器被包装在另一个函数中,var
将其作用域限定到该函数。您可以删除它以使其成为全局变量,也可以稍后在包装函数的相同范围内执行它
当这一切结束时,只要你不再打电话,它就结束了。如果你是
如果计时器被包装在另一个函数中,var
将其作用域限定到该函数。您可以删除它以使其成为全局变量,也可以稍后在包装函数的相同范围内执行它。您实际上只需传递对间隔的引用:
var interval_id;
interval_id = setInterval(function(){bid_button(id, interval_id); },1000);
function bid_button (id, interval_id) {
clearInterval(interval_id);
}
这是因为间隔中的回调函数稍后调用
请记住,由于bid_按钮
的执行方式,某些间隔可能无法清除。例如,如果你失去了互联网连接,它会不断尝试。请求将通过status=0
解决。实际上,您只需传递一个对间隔的引用:
var interval_id;
interval_id = setInterval(function(){bid_button(id, interval_id); },1000);
function bid_button (id, interval_id) {
clearInterval(interval_id);
}
这是因为间隔中的回调函数稍后调用
请记住,由于bid_按钮
的执行方式,某些间隔可能无法清除。例如,如果你失去了互联网连接,它会不断尝试。如果每间隔多次调用bid_按钮
,请求将以status=0
解决,其中一些请求将不会被清除。我不推荐这种解决方案。“使用全局变量”应该会触发一些警报。如果您每间隔多次调用bid_按钮
,其中一些将不会被清除。我不推荐这种解决方案。“使用全局变量”应该会引起一些警钟。我想过,但我认为它不会起作用。现在我明白为什么它会起作用了。谢谢你我考虑过了,但我认为这不管用。现在我明白为什么它会起作用了。非常感谢。
var interval_id;
interval_id = setInterval(function(){bid_button(id, interval_id); },1000);
function bid_button (id, interval_id) {
clearInterval(interval_id);
}