setInterval 无法按预期工作
setInterval dosn't work as expected
本文关键字:工作 setInterval 更新时间:2023-09-26
function startAutoScrolling() {
var distance = y2 - y1;
var speed = distance / dateDiff;
interval1 = setInterval(function() { doAutoScrolling(speed); }, 1);
}
在这里我想减少 0.1 的步长但它不是那样工作的,我不知道为什么
function doAutoScrolling(step) {
document.getElementById(CONTEINER).scrollTop += step;
if (isGoingDown) {
step = step - 0.1;
console.log("step - 1: " + step);
if (step <= 0) {
clearInterval(interval1);
}
} else { // there is continue below
在这里我想增加步骤,如果条件必须停止执行块但它也不起作用
step += 0.01;
if (step >= 0) {
clearInterval(interval1);
}
}
}
你正在使用Javascript逗号运算符,你很可能想要使用小数,例如:
step = step - 0,1;
应该是:
step = step - 0.1;
有关逗号运算符的更多信息:
- 逗号在 JavaScript 表达式中有什么作用?
- 逗号运算符何时有用?
更新(逗号到点之后 - 更改(
在 Javascript 中,原语是按值传递的(参见:Javascript 是否通过引用传递?(,所以你基本上是使用相同的值(speed
的值(一遍又一遍地调用doAutoScrolling
。您需要执行以下操作之一:
- 将
speed
包装在对象中以便按引用传递- 使
speed
成为全局变量或至少在doAutoScrolling
的父上下文中定义 将
setInterval
替换为setTimeout
并在doAutoScrolling
中设置新的超时:var newStep = /* calculate new step */
setTimeout("doAutoScrolling("+newStep+")",1);
相关文章:
- setInterval和clearInterval javascript无法按需工作
- 使setInterval和setTimeout工作时出现问题
- clearInterval停止setInterval纯粹基于时间工作
- Javascript setInterval工作不正常
- setInterval() 无法正常工作 - 呈指数级增长
- setInterval 或 window.location 在 Opera、IE 和 Safari 中无法正常工作
- 控制台.log在 setInterval 中无法为 Tampermonkey 工作
- Javascript setInterval在localhost上工作,但确实'Don’我不在现场工作
- setInterval工作setTimeout不工作;t
- setInterval没有'使用jquery mobile时无法工作
- 在MDN setInterval示例中,var intervalID是如何工作的
- ASP表单在服务器上运行,不允许内部HTML按钮onlick setInterval工作
- Javascript 函数 setInterval() 只工作一次
- setInterval 无法正常工作
- 为什么 javascript 中的 setInterval 无法正常工作
- Javascript setInterval 不在 Windows 上的 Safari 中运行,在 Chrome 中工作
- 循环动画javascript,SetInterval只工作一次
- 为什么 SetInterval 不起作用(它只工作一次)
- Cordova/PhoneGap: setInterval() / setTimeout() 无法正常工作
- setInterval() 对于非活动选项卡无法正常工作