[英]Javascript works in HTML file but not in Javascript file
我试图将计时器添加到我的代码中。 问题是代码在HTML内使用时工作正常,但是当我尝试在外部javascript文件中使用它时却无法正常工作。 帮帮我
我尝试使用内部HTML代码,它可以完美运行,但不能作为单独的Javascript文件使用
<div> Time :<span id ="timer"></span></div>
<script type="text/javascript">
var timeoutHandle;
function countdown(minutes, seconds) {
function tick() {
var counter = document.getElementById("timer");
counter.innerHTML =
minutes.toString() + ":" + (seconds < 10 ? "0" : "") + String(seconds);
seconds--;
if (seconds >= 0) {
timeoutHandle = setTimeout(tick, 1000);
} else {
if (minutes >= 1) {
// countdown(mins-1); never reach “00″ issue solved:Contributed by Victor Streithorst
setTimeout(function () {
countdown(minutes - 1, 59);
}, 1000);
}
}
if (seconds==0 && minutes ==0){
alert("Game over");
reset();
}
}
tick();
}
countdown(1, 00);
</script>
这是HTML内部使用的代码。 但是当我尝试在外部Js文件中使用它时,它不起作用。
<script src="game.js"></script>
以上是外部Js文件。 帮我解决这个问题
您的问题是脚本的加载位置。 在您的HTML页面上,它声明了timer元素后正在加载并运行。 当您将其移动到外部javascript文件时,它可能不是在等待该元素的创建和设置。 您应该将对倒计时的调用移至文档加载监听器中
将JS包装在window中window.onload = function() { }
window.onload = function() { var timeoutHandle; function countdown(minutes, seconds) { function tick() { var counter = document.getElementById("timer"); counter.innerHTML = minutes.toString() + ":" + (seconds < 10 ? "0" : "") + String(seconds); seconds--; if (seconds >= 0) { timeoutHandle = setTimeout(tick, 1000); } else { if (minutes >= 1) { // countdown(mins-1); never reach “00″ issue solved:Contributed by Victor Streithorst setTimeout(function () { countdown(minutes - 1, 59); }, 1000); } } if (seconds==0 && minutes ==0){ alert("Game over"); reset(); } } tick(); } countdown(1, 00); }
<div> Time :<span id="timer"></span></div>
javascript代码在构建DOM之前已运行。 将其包装在window.onload函数中可确保其等待DOM构建
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.