我希望有人可以帮助我。我正在编写一些具有多个自调用函数的代码。如果我将它们嵌入到html页面(参见下面的代码),它们都会有用,但是如果它们(显然减去周围的脚本标签)包含在我的外部javascript文件中而不是......没有快乐,它们不会调用自己。任何线索,如果放在外部文件中可能会出错,以及为什么不调用(以及如何让他们这样做!):
自动调用函数从html页面中删除:
<script>
(function () {
window.addEventListener("load", function() {
var d = new Date();
var n = d.toLocaleString();
var x = function dateDisplay(){
document.getElementById("dateDisplay").textContent = n;
}
x();
})
document.getElementById("dateDisplay").style.color = "red";
})();
var add = (function () {
var counter = 0;
return function () {return counter += 1;}
})();
function closureCount() {
var hugeNum = Math.random();
var fixedNum = (hugeNum * 100) + 1;
var randomNum= Math.floor(fixedNum);
document.getElementById("p_r4").innerHTML = add() + " " + randomNum;
//code
}
</script>
尝试“少即是多”的方法:
<script>
和</script>
标签已被删除,并且不在外部js文件中。脚本标记仅在HTML文件中有效。(function ()
{ window.addEventListener("load", function()
{ var d = new Date();
var n = d.toLocaleString();
// access document elements after window load
document.getElementById("dateDisplay").textContent = n;
document.getElementById("dateDisplay").style.color = "red";
});
})();
var add = (function ()
{ var counter = 0;
return function ()
{ return counter += 1;
}
})();
(为了调试目的,将'{'和'}'彼此相互配对,更改为符合您自己的风格。)
我知道这是“向前发展的互联网时间尺度”中的一个古老信息......但是自从我在2018年底遇到同样的问题时出现了问题,似乎没有人接受答案 - 或者一个真正起作用的人,我决定写一个评论给2021年发现这个的可怜的家伙,可能无法弄清楚:)
简而言之;如果服务器为文件提供正确的MIME类型,则外部文件中的自执行函数可以正常工作; “text / javascript”(我假设一些用于JavaScript文件的旧MIME类型应该同样有效,但我从未真正尝试过它们)。需要注意的一点是,“text / plain”是肯定不起作用的MIME类型之一 - 根据“file”命令(或类似命令)的输出确定MIME类型的服务器将尝试使用它,除非手动配置。
所以 - 希望这有帮助:)