清除interval和setinterval作用域
Javascript - Clearing the interval and setinterval scope
我有一些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(...)
。
正如您在问题中所说,您的处理程序是全局的。但是变量本身不是,所以它不能在函数的作用域之外被访问。
相关文章:
- 监视函数从服务返回不起作用,但作用域函数起作用
- 将作用域存储在JSON中
- 从控制器继承了隔离的作用域以生成可重用的指令
- 从ng模板访问作用域
- 调用私有作用域
- 对父作用域的指令更新延迟了一步
- 正在$rootScope上达到控制器作用域$在内部控制器上
- 两个指令创建新的继承的和隔离的作用域-元素得到哪个
- 这两个关于 JavaScript 作用域链的例子有什么区别?
- 在具有命名作用域的自定义Polymer元素中隐藏表行
- AngularJS指令隔离作用域
- Angularjs:修改js中的作用域,稍后在页面中使用
- window.setInterval()的dojo.hatch()作用域
- JavaScript'这'window.setInterval中的作用域
- for 循环中 setInterval 中计数器变量 i 的作用域
- 如何处理 setInterval javascript 的作用域
- 清除interval和setinterval作用域
- SetInterval调用时严格模式作用域错误
- 重置函数中的setInterval,作用域是全局的
- Javascript SetInterval()作用域问题