Javascript文件不执行

Javascript文件不执行,javascript,html,Javascript,Html,我用JavaScript编写了一个非常简单的倒计时计时器,我硬编码它来告诉用户离某个日期还有多少天。这应该显示在网页上 下面是JavaScript: var message, days; if (new Date().getMonth() === 6) { days = 34 - new Date().getDate(); message = "Coming in " + days + " days"; } else if (new Date().getMonth() === 7

我用JavaScript编写了一个非常简单的倒计时计时器,我硬编码它来告诉用户离某个日期还有多少天。这应该显示在网页上

下面是JavaScript:

var message, days;
if (new Date().getMonth() === 6) {
    days = 34 - new Date().getDate();
    message = "Coming in " + days + " days";
} else if (new Date().getMonth() === 7) {
    if (new Date().getDate() > 2) {
        message = "Almost there!";
    } else if (new Date().getDate() === 2) {
        message = "Coming in 1 day";
    } else {
        days = 3 - new Date().getDate();
        message = "Coming in " + days + " days";
    }
} else {
    message = "Coming soon";
}
document.getElementById("coming_soon").innerHTML = message;
以下是HTML:

<span id="coming_soon"></span>

问题是,如果我内联JavaScript,它运行得很好,并显示倒计时。但是,如果我将其作为一个独立的
.js
文件包含,则不会显示倒计时

如何将其作为一个单独的文件包含,并且仍然运行并显示倒计时

我是JavaScript的完全初学者,HTML介于中级和初级之间


提前感谢。

浏览器的错误控制台中是否有任何消息?确保脚本包含在您试图修改的
元素之后,或者在
元素上使用。否则,
getElementById()
将找不到它。

这应该可以:

没有jQuery,也适用于旧IE

var eventPrefix = "";
if (typeof window.addEventListener === "undefined" && window.attachEvent) {
    eventPrefix = "on";
    window.addEventListener = window.attachEvent;
}

if (typeof window.addEventListener !== "undefined") {
    window.addEventListener(eventPrefix + 'load',  function() {
        var message, days;
        if (new Date().getMonth() === 6) {
            days = 34 - new Date().getDate();
            message = "Coming in " + days + " days";
        } else if (new Date().getMonth() === 7) {
            if (new Date().getDate() > 2) {
                message = "Almost there!";
            } else if (new Date().getDate() === 2) {
                message = "Coming in 1 day";
            } else {
                days = 3 - new Date().getDate();
                message = "Coming in " + days + " days";
            }
        } else {
            message = "Coming soon";
        }
        document.getElementById("coming_soon").innerHTML = message;
    });
}



预览:

优化代码:

编辑:
在这种情况下,IIFE是冗余的,因为OP的代码不是函数中的自包含项。 不过,如果有人想深入讨论这个问题,我可以把答案留在这里


您可能还想了解通常所称的立即调用函数表达式(IIFE)

有关更多信息,请参见贝尔·阿尔曼网站:

基本上,通过使用这种语法包装代码,您告诉浏览器立即执行您的函数,这就做到了:

(function(){ 
  /* your code */ 
})();

请用您的代码查看此工作文件:

将其包含在
文档中。准备好了
并在页面底部引用该文件应该可以使用。@Justcode很抱歉,我不理解您的建议。我完全是JavaScript的初学者。从昨天就开始了。好吧,我把这个贴出来作为一个答案,这对我来说是个大问题explain@Justcode当然,我的问题是,我使用的某些语法只有在HTML内联包含时才有效?如何将外部js文件包含到HTML页面中?您是否有正确的路径以便实际包含该文件?对于这样一个简单的问题,添加事件侦听器的复杂性是不必要的。特别是考虑到OP是一个绝对的初学者,这几乎与OP想要的相反。实际上,执行需要延迟。这根本不是相反,因为它正在工作。然而,我现在认为IIFE可能是多余的,因为OP的代码不在函数中。