我正在尝试使用数字计数器动画来显示元素的值,而setTimeout()在firefox
中作为指定的时间工作,但出于某种原因IE
它会被快速调用。
以下是我的代码..
$('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次)。
我也经历过这些问题,但没有一个帮助过。 的 one 的 two
是IE
中的问题还是我的代码本身有问题?
答案 0 :(得分:1)
我猜这是一种竞争条件,并建议这可能是一种更好的方法来实现同样的目标:
$('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的计时系统的性质而显而易见。您的代码取决于时间,但这些时间不保证。当你说&#34;每隔X毫秒执行一次&#34;时,实际发生的是系统将尝试以尽可能接近请求的时间执行代码。但是,当有其他事件要运行时,它可能无法执行此操作,并且这些事件的执行使它们在您请求的时间内运行。