setTimeout在IE中执行得很快
setTimeout is executing fast in IE
我正在尝试数字计数器动画来显示元素的值,并且setTimeout()在firefox
中作为指定时间工作,但由于某些原因,在IE
中它被快速调用。
Jsfidle代码
下面是我的代码。。
$('document').ready(function() {
var i=1,data=10;
my_int=setInterval(
function () {
if(i<=data)
$('p').text(i++);
else
$('body').append("overflow"); }
,64);
setTimeout(function() { $('body').append("done");clearInterval(my_int); },64*data);
});
我的意思是,在IE
中,setInterval()被执行了8次,然后它调用了超时函数(而它应该循环10次)。
我也讨论过这些问题,但都没有帮助。一个两个
这是IE
中的问题还是我的代码本身的问题??
我猜这是一个竞赛条件,并建议这可能是实现相同目标的更好方法:
$('document').ready(function() {
var i = 1, data = 10;
my_int = setInterval(function () {
if (i <= data) {
$('p').text(i++);
}
else {
$('body').append("overflow").append("done");
clearInterval(my_int);
}
}, 64);
});
为了回答您的实际问题,很可能是您的代码出现了问题,而这只是由于IE定时系统的性质而显而易见的。您的代码取决于时间,但这些时间不能保证。当你说"每X毫秒执行一次"时,实际发生的情况是系统会尝试在尽可能接近请求的时间执行你的代码。但是,当有其他事件要运行,并且这些事件的执行使它们在您请求的时间内运行时,它可能无法做到这一点。
相关文章:
- 无法在通过jQuery的ajax加载的页面中执行javascript
- JavaScript执行暂时挂起页面
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 当js函数's已执行
- 哪个先执行
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- HTML表单提交时未执行外部函数
- 在Safari执行javascript之前对其进行修改
- Amd,希望确保某个东西总是最后执行
- 在Windows 10中自动执行例行程序(主要与浏览器交互)
- 递归使用 eval() 是检查程序执行的好方法吗?
- 如何做到这一点,使代码在不传递条件后执行函数
- 如何在执行此特定onclick事件时执行JavaScript函数
- 如何在从浏览缓存加载页面时执行javascript
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- Jquery:代码在rails中的页面加载时未执行
- 如何防止jQueryonclick事件中的Ruby方法在页面刷新时执行
- JavaScript动画从不执行
- 为什么onsubmit函数似乎没有执行
- setTimeout在IE中执行得很快