[英]Javascript file does not execute
我用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中级和初学者之间。
提前致谢。
浏览器的错误控制台中是否有任何消息? 确保要尝试修改的<span>
元素之后包含脚本,或者使用<script>
元素上的defer
属性 。 否则, 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;
});
}
预览: http : //jsfiddle.net/4JPCP/1/show/
优化的代码: http : //jsfiddle.net/4JPCP/3/
编辑:
在这种情况下,IIFE是多余的,因为OP的代码不是自身包含在函数中。 但是,如果有人想深入探讨该论点,我可以将答案留在这里。
您可能还想探索通常称为立即调用函数表达式(IIFE)的内容 。
有关更多信息,请参见Bel Alman网站:
http://benalman.com/news/2010/11/immediately-invoked-function-expression/
基本上,通过使用以下语法包装代码,您就是在告诉浏览器立即执行您的功能,这可以解决问题:
(function(){
/* your code */
})();
请使用以下代码查看该工作的Plunker: http ://plnkr.co/edit/cPObPCqVhavvWLtQbldd?p=preview
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.