如果时间太短,setInterval将不起作用
setInterval wont work if timing is too short
我有一个setInterval
函数,如果增量小于101ms,它不会执行。计时将在100毫秒以上的任何数字上进行。我想让函数增加10ms。当时间小于101ms时,offY
和strtPos
也变得不确定。我如何使它的工作一样,但相反,它增加了10ms?
var strtPos;
var offY;
var offX;
var hold = true;
var obj = document.getElementById('obj');
var st = function() {
offY = obj.offsetTop;
}
var init = setInterval(function() {
other()
}, 101); //<-- When I change that value to below 101, it prevents the code from working
var other = function() {
if (hold) {
strt();
hold = false
};
console.log(offY)
console.log(strtPos)
if (strtPos - 100 <= offY) {
obj.style.top = (offY - 11) + "px";
} else {
clearInterval(init);
hold = true;
}
}
var strt = function() {
strtPos = offY
}
setInterval(st, 100)
body {
margin: 0;
}
#obj {
width: 50px;
height: 100px;
background-color: red;
position: fixed;
}
<div id="obj"></div>
简短的回答是,您需要给offY
一个最初不是未定义的值,因此我重新安排了代码顶部的变量。
最初,offY
只在~100ms后得到一个值(setInterval(st, 100)
),如果没有一个不是undefined
的值,other
函数的计算将无法工作。因此需要先执行st
函数,因此需要值> 100。
var strtPos;
var offX;
var hold = true;
var obj = document.getElementById('obj');
var offY = obj.offsetTop;
var st = function() {
offY = obj.offsetTop;
}
var init = setInterval(function() {
other()
}, 10);
var other = function() {
if (hold) {
strt();
hold = false
};
console.log(offY)
console.log(strtPos)
if (strtPos - 100 <= offY) {
obj.style.top = (offY - 11) + "px";
} else {
clearInterval(init);
hold = true;
}
}
var strt = function() {
strtPos = offY
}
setInterval(st, 100)
body {
margin: 0;
}
#obj {
width: 50px;
height: 100px;
background-color: red;
position: fixed;
}
<div id="obj"></div>
相关文章:
- Jquery:输入类型=“”;按钮“;使用.click()函数在Internet Explorer和Safari中不起作
- 如何选择数组中的第一个对象(当 array[0] 不起作用时)
- document.getElementById('myControl').focus() 在 PhoneGap 中不起作
- Javascript 在单击时对 setInterval 不起作用
- JQuery prop('required', false, (!$(this).is(':checked')) 不起作
- 为什么从 JavaScript 调用 Flash 函数可以工作,但 FileReference 在 Flash 中不起作
- 返回函数中的 setInterval 不起作用
- 为什么 SetInterval 不起作用(它只工作一次)
- 捆绑和缩小 - 启用脚本不起作用时
- fb:like 当被要求登录 IE 不起作用时
- document.head.appendChild 或 document.createElement 在 IE 中不起作
- 主页链接'的背景颜色在Internet explorer中发生了变化,但在Mozilla Firefox中不起作
- HTML、PHP、JavaScript——如何为数据库中的每个单独记录制作一个按钮?看起来很简单,但事实并非如此;不起作
- 当页面请求和重载javascript函数不起作用时
- setInterval不起作用
- 在使XMLHttpRequest到服务器头(“location:index.php”)函数不起作用时
- 当getElementById不起作用时,如何查找输入字段的id
- Javascript setInterval不起作用
- 当fontWeight不起作用时,如何使HTML5字体更轻?
- 清除interval后Setinterval不起作用