为什么 setTimeout() 函数只运行一次?
我正在制作一个 javascript 书签,可以定期调整所有图像的大小。
javascript: function x(){
for(i=0;i<=document.getElementsByTagName('img').length;i++)
document.getElementsByTagName('img')[i].width+=1;
};
t = window.setTimeout("x()",100);
void(0);
但它只运行一次。这里有什么问题?
I am making a javascript bookmarklet that resizes all images, periodically.
javascript: function x(){
for(i=0;i<=document.getElementsByTagName('img').length;i++)
document.getElementsByTagName('img')[i].width+=1;
};
t = window.setTimeout("x()",100);
void(0);
But it runs only once. What is the problem here??
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
您是否正在寻找
setInterval()
而不是setTimeout()
?Are you looking for
setInterval()
instead ofsetTimeout()
by any chance?为了清楚起见,这里是正确缩进的相同代码
window.setTimout() 仅执行传递的代码一次,因为它是有意的。如果您想更频繁地执行代码,请使用 window.setInterval()。
Here is the same code properly indented for clarity
window.setTimout() executes the passed code only once because it is meant to. If you want to execute code more often, use window.setInterval().
for 循环末尾不应该是
i++
吗?Shouldn't it be
i++
at the end of your for loop?另外还有一个语法错误。
for(i=0;i<=document.getElementsByTagName('img').length;i++)
Also there is a syntax error.
for(i=0;i<=document.getElementsByTagName('img').length;i++)
您需要将...放在
函数 x() 括号 { } 内,它与 SetTimeout() 一起使用。
您只能在所有图像都加载到页面上或出现错误后调用 x()。
You need to put the...
inside the function x() brackets { } and it works with SetTimeout()
You can only call x() after all the images have been loaded on the page or there is an error.
可能是window.setTimeOut("x",100)
编辑:更正此
window.setTimeout(x,100)
的答案。PS:如果您只是使用 IDE,就会发生这种情况。
It might bewindow.setTimeOut("x",100)
Edit : correct the answer to this
window.setTimeout(x,100)
.PS: thats what happens if you simply work with a IDEs.