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
这里我想增加步骤,如果条件必须停止 block 的执行 但它也不起作用
step += 0.01;
if (step >= 0) {
clearInterval(interval1);
}
}
}
最佳答案
您在最可能想要使用小数的地方使用了 Javascript 逗号运算符,例如:
step = step - 0,1;
应该是:
step = step - 0.1;
有关逗号运算符的更多信息:
更新(逗号后更改为点)
原语在 Javascript 中是按值传递的(请参阅: Does Javascript pass by reference? ),因此您基本上是用相同的值( speed< 的值)一遍又一遍地调用
)。您需要执行以下操作之一:doAutoScrolling
/
- 将
speed
包裹在对象中以便通过引用传递 - 将
speed
设置为全局变量,或者至少在doAutoScrolling
的父上下文中定义 将
setInterval
替换为setTimeout
并在doAutoScrolling
中设置新的超时:var newStep =/* 计算新步数 */
setTimeout("doAutoScrolling("+newStep+")",1);
关于javascript - setInterval 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25659614/