我必须每秒更换一张图片的来源。我有一个 for 循环,其中调用了一个有超时的函数。我在 stackOverflow 上读到过它,但它不起作用。有人可以告诉我我可以解决什么问题吗?我一直在为此苦苦挣扎,我想承认的更多。谢谢。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<script type="text/javascript">
function changeImage(k) {
setTimeout(function(){
document.getElementById("img").src = k + ".png"; alert(k );}, 1000);
}
function test() {
for (var k = 1; k <= 3; k++) {
changeImage(k);
}
}
</script>
</head>
<body>
<div id="main_img">
<img id="img" src="http://placehold.it/110x110">
</div>
<input type="button" style="width: 200px" onclick="test()" />
</body>
最佳答案
在您的代码中,您一次设置了所有超时。因此,如果您将它们设置为 all 一秒后它们将在一秒后all 触发。
您已经传入了索引 k
,因此只需将时间参数乘以 k
。
setTimeout(function(){
document.getElementById("img").src = k + ".png";
alert(k);
}, k * 1000);
// ^ added
关于Javascript setTimeout 在 for 循环中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20810053/