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);
}
}
}
答案 0 :(得分:4)
你正在使用Javascript逗号运算符,你最有可能想要使用小数,例如:
step = step - 0,1;
应该是:
step = step - 0.1;
有关逗号运算符的更多信息:
更新(逗号到点后更改)
原语在Javascript中按值传递(请参阅:Does Javascript pass by reference?),因此您基本上使用相同的值(doAutoScrolling
的值)一遍又一遍地调用speed
。您需要执行以下操作之一:
speed
以便通过引用传递speed
成为全局变量,或者至少在doAutoScrolling
将setInterval
替换为setTimeout
并在doAutoScrolling
中设置新超时:
var newStep = /* calculate new step */
setTimeout("doAutoScrolling("+newStep+")",1);