Javascript 在 HTML 文件中有效,但在 Javascript 文件中无效

标签 javascript html

我尝试将计时器添加到我的代码中。问题是代码在 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文件。帮我解决这个问题

最佳答案

将 JS 包装在 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 构建

关于Javascript 在 HTML 文件中有效,但在 Javascript 文件中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57496304/

相关文章:

javascript - 如何在 SweetAlert 中而不是在对象上显示值

javascript - Array.prototype.sort.call() 应该返回窗口对象吗?

javascript - 如何防止外部脚本覆盖我的 main.js 配置

javascript - 在 Google Chrome/Chromium 和 Safari 中拖放文件上传?

javascript - Google map 中奇怪的缩放按钮样式。有人有什么想法吗?

javascript - 快速获取根事件不起作用

javascript - id下自定义selectmenu jquery

javascript - 为什么 HTML 元素隐藏在 javascript 生成的元素后面?

javascript - $(document).ready 函数不会启动

java - Android Html5/java 应用程序 : mosync gallery upload & send email