var k=0;var n=0;
function shiftrigh(){
n=n+1;
if(n<=193)
window.setTimeout(shiftright(),100);
else
n=0;}
function shiftright(){
k-=1;
document.getElementById("abcmngcontainer").style.left=k+"px";
window.setTimeout(shiftrigh(),100);
}
function shiftlef(){
n=n+1;
if(n<=193)
window.setTimeout(shiftleft(),100);
else
n=0;}
function shiftleft(){
k+=1;
document.getElementById("abcmngcontainer").style.left=k+"px";
window.setTimeout(shiftlef(),100);
}
嗨,我有上面的代码。调用时函数shiftrigh
调用shiftright
然后调用一个循环
已创建,然后继续n
为193
。 shiflef
对的情况也是如此。
代码正在运行,但它工作得很快。无论我是减少settimeout中的时间值还是增加它,它都保持不变。更新速度非常快,不够顺畅。
答案 0 :(得分:7)
变化:
window.setTimeout(shiftright(),100);
为:
window.setTimeout(shiftright,100);
注意丢失的parens。与shiftleft()
- &gt;相同shiftleft
。
这是JavaScript中常见的误解。 setTimeout()
需要引用函数(shiftright
)。你正在做的是立即调用该函数并将从它返回的任何函数传递给setTimeout()
。显然不是意图。
答案 1 :(得分:0)
您使用window.setTimeout
错了!
window.setTimeout(shiftlef(),100);
您必须传递函数引用,而不是函数的返回码。 所以正确的版本看起来像这样:
window.setTimeout(shiftlef,100);
答案 2 :(得分:0)
setTimeout
需要一个函数-NAME或一个函数 - “variable”/“pointer”作为第一个参数......
只需删除大括号 - &gt;
window.setTimeout(shiftleft, 100)