gpt4 book ai didi

Javascript - 清除间隔和 setinterval 范围

转载 作者:行者123 更新时间:2023-12-02 18:47:42 25 4
gpt4 key购买 nike

我有一些 AJAX,它使用 setInterval() 显示进度条来获取脚本的当前进度。我的问题是当进度达到100%时我似乎无法杀死它。我不确定这是否与范围有关,但我的处理程序是全局的,所以我不明白为什么它不起作用。这是我所拥有的:

function showLog(){
document.getElementById('log').style.display = "block";
clearInterval(inth);
return false;
}

function startAjax(){
var inth = setInterval(function(){
if (window.XMLHttpRequest){ xmlhttpp=new XMLHttpRequest();}else{ xmlhttpp=new ActiveXObject("Microsoft.XMLHTTP"); }
xmlhttpp.onreadystatechange=function(){
if(xmlhttpp.readyState==4 && xmlhttpp.status==200){
document.getElementById("sbar").innerHTML=xmlhttpp.responseText;
}
}
xmlhttpp.open("POST","scrape.php",true);
xmlhttpp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
var sitelist = document.getElementById('website').value;
var par = "website="+sitelist;
xmlhttpp.send(par);
}, 5000);
return false;
}

为什么clearInterval不起作用?我做错了什么?

最佳答案

这是一个范围问题,将函数外部的var inth声明为全局变量。并在 startAjax 函数中使用 inth = setInterval(...)

正如您在问题中所说,您的处理程序是全局的。但变量本身不是,所以不能在函数作用域之外访问它。

关于Javascript - 清除间隔和 setinterval 范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16185088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com