我试图创建一个每10秒更换4次然后重新开始的页面。为此,我制作了一个计数器并将其与我的功能一起传递。它甚至看起来都不像它的装载。
我也尝试使用<body onload="start()">
。
<script>
var i = 1;
function start(){
i = setInterval(changeEdu, 10000, i);
}
function changeEdu(i){
if(i == 4){
i = 1;
}else{
i++;
}
document.getElementById("edu1").src = "left" + i + ".jpg";
document.getElementById("edu2").src = "right" + i + ".jpg";
return i;
}
</script>
答案 0 :(得分:2)
通过将i
声明为函数的参数,您的增量只会改变局部变量而不是全局状态。此外,返回值将被忽略。
var i = 1;
function start() {
setInterval(changeEdu, 10000);
}
function changeEdu() {
// ^^
if (i == 4) {
i = 1;
} else {
i++;
}
document.getElementById("edu1").src = "left" + i + ".jpg";
document.getElementById("edu2").src = "right" + i + ".jpg";
}
答案 1 :(得分:0)
我相信这是因为你在i
函数开始时重新分配变量start()
。 setInterval
返回一个用于取消clearInterval(theNumber)
函数的函数的数字。
我也是JS的新手,但我会尝试删除start()
函数中的重新分配,然后重试。
答案 2 :(得分:0)
这不是setInterval
的工作原理,它不会返回您的返回值。
你需要创建一个闭包。
此外,永远不会调用startInterval()。 将其更改为此并且有效:
<script>
(function(){
var i = 1;
function changeEdu(){
if(i == 4){
i = 1;
}else{
i++;
}
// document.getElementById("edu1").src = "left" + i + ".jpg";
// document.getElementById("edu2").src = "right" + i + ".jpg";
console.log(i);
}
setInterval(changeEdu, 10000);
})();
</script>