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);
}
}
}
最佳答案
您在最有可能要使用小数的地方使用了Java逗号运算符,例如:
step = step - 0,1;
应该:
step = step - 0.1;
有关逗号运算符的更多信息:
What does a comma do in JavaScript expressions?
When is the comma operator useful?
更新(逗号到点-change之后)
基元在Javascript中按值传递(请参见:Does Javascript pass by reference?),因此您基本上是一遍又一遍地使用相同的值(
doAutoScrolling
的值)调用speed
。您需要执行以下操作之一:将
speed
包裹在对象中以通过引用使
speed
成为全局变量或至少在doAutoScrolling
的父上下文中定义将
setInterval
替换为setTimeout
并在doAutoScrolling
中设置新的超时:var newStep = /* calculate new step */
setTimeout("doAutoScrolling("+newStep+")",1);