递归 setTimeout() 函数在 javascript 中不重复
recursive setTimeout() function not repeating in javascript
我的 setTimeout() 函数在第一个 运行 秒后不再重复。它 运行 最初在“Window.onload”中,但“myHandler”函数中的第二个 setTimeout() 运行
问题区域:
变量超时;
window.onload = function(){
timeout = setTimeout(myHandler, 5000);
};
function myHandler() {
i++;
timeout = setTimeout(myHandler, 10000)
}
HTML中的完整代码:
<html>
<body>
<iframe id="myVideo" allowfullscreen="true" height="720"
width="1280"></iframe>
<script type="text/javascript">
var videoSource = new Array();
videoSource[0] = 'xxx';
videoSource[1] = 'xxx';
var i = 0;
var videoCount = videoSource.length;
var timeout;
window.onload = function(){
timeout = setTimeout(myHandler, 5000);
};
function myHandler() {
alert('run')
i++;
if (i == (videoCount - 1)) {
i = 0;
videoPlay(i);
} else {
videoPlay(i);
}
timeout = setTimeout(myHandler, 10000)
}
function videoPlay(videoNum) {
document.getElementById("myVideo").setAttribute("src", `${videoSource[videoNum]}&parent=localhost&autoplay=true&muted=false`);
document.getElementById("myVideo").load();
document.getElementById("myVideo").play();
}
videoPlay(0); // play the video
</script>
</body>
</html>
我在本地 运行 代码,我在 videoPlay 函数上遇到了一些错误。我认为 setTimeout 没有错,但是当 javascript 崩溃时,该函数不会再次 运行。尝试评论 videoPlay 调用,代码将 运行.
考虑使用 setInterval 而不是 setTimeout。
而且您不需要在 if 和 else 上调用 videoPlay,您可以将其重构为
if (i == videoCount - 1)
i = 0
videoPlay(i)
事实证明,我解决了自己的问题:
document.getElementById("myVideo").load();
document.getElementById("myVideo").play();
不是 iframe 的函数,它不是 运行 我的其余代码。
感谢大家的帮助和意见。
我的 setTimeout() 函数在第一个 运行 秒后不再重复。它 运行 最初在“Window.onload”中,但“myHandler”函数中的第二个 setTimeout() 运行
问题区域: 变量超时;
window.onload = function(){
timeout = setTimeout(myHandler, 5000);
};
function myHandler() {
i++;
timeout = setTimeout(myHandler, 10000)
}
HTML中的完整代码:
<html>
<body>
<iframe id="myVideo" allowfullscreen="true" height="720"
width="1280"></iframe>
<script type="text/javascript">
var videoSource = new Array();
videoSource[0] = 'xxx';
videoSource[1] = 'xxx';
var i = 0;
var videoCount = videoSource.length;
var timeout;
window.onload = function(){
timeout = setTimeout(myHandler, 5000);
};
function myHandler() {
alert('run')
i++;
if (i == (videoCount - 1)) {
i = 0;
videoPlay(i);
} else {
videoPlay(i);
}
timeout = setTimeout(myHandler, 10000)
}
function videoPlay(videoNum) {
document.getElementById("myVideo").setAttribute("src", `${videoSource[videoNum]}&parent=localhost&autoplay=true&muted=false`);
document.getElementById("myVideo").load();
document.getElementById("myVideo").play();
}
videoPlay(0); // play the video
</script>
</body>
</html>
我在本地 运行 代码,我在 videoPlay 函数上遇到了一些错误。我认为 setTimeout 没有错,但是当 javascript 崩溃时,该函数不会再次 运行。尝试评论 videoPlay 调用,代码将 运行.
考虑使用 setInterval 而不是 setTimeout。 而且您不需要在 if 和 else 上调用 videoPlay,您可以将其重构为
if (i == videoCount - 1)
i = 0
videoPlay(i)
事实证明,我解决了自己的问题:
document.getElementById("myVideo").load();
document.getElementById("myVideo").play();
不是 iframe 的函数,它不是 运行 我的其余代码。
感谢大家的帮助和意见。