窗口内的Javascript函数。addEventListener(“加载”,函数()未定义-为什么?
我有一个非常简单的Javascript函数,名为Notice()。我只想在页面加载后访问它(Notice()函数使用一些其他变量,这些变量只有在页面加载完成后才可用)。错误是“Notice()函数未定义” 为什么没有定义它,以及如何确保它被定义并在包含在窗口中时正常工作。addEventListener(“load”,function())函数 整个代码如下,JS fiddle如下:窗口内的Javascript函数。addEventListener(“加载”,函数()未定义-为什么?,javascript,Javascript,我有一个非常简单的Javascript函数,名为Notice()。我只想在页面加载后访问它(Notice()函数使用一些其他变量,这些变量只有在页面加载完成后才可用)。错误是“Notice()函数未定义” 为什么没有定义它,以及如何确保它被定义并在包含在窗口中时正常工作。addEventListener(“load”,function())函数 整个代码如下,JS fiddle如下: 提交 addEventListener(“加载”,函数(){ 功能通知(){ 警报(“正常”); } },假);
提交
addEventListener(“加载”,函数(){
功能通知(){
警报(“正常”);
}
},假);
函数声明的作用域是它们在其中声明的函数。您只能从匿名加载函数中调用Notice
。您可以通过在窗口中显式放置Notice
来更改这一点:
window.addEventListener("load", function () {
window.Notice = function () {
alert('ok');
}
}, false);
或者更好的方法是,去掉addEventListener
,只声明函数。我看不出在当前代码中有什么理由这样做:
function Notice () {
alert('ok');
}
您可以在这个代码笔中看到两种方法:
如果您可以控制创建按钮的html,则可以消除显式onClick事件,并在加载窗口后通过js将其添加进来:
window.addEventListener("load", function () {
window.Notice = function () {
alert('ok');
}
document.getElementById("L").onclick = Notice()
}, false);
因为函数是在按钮创建之后才定义的,从这个通知
函数应该被调用的地方?窗口。addEventListener
或通过按钮clickHm。我认为函数首先加载,然后应该可用(我在页面加载后单击按钮)。是否可以使其工作?只应在单击按钮时调用Notice()函数。问题是范围,而不是时间。请参阅下面的答案。我试图更新它,但它似乎没有发出警报…-可能是我犯了一些错误?您犯了在第5行调用Notice的错误(即,…=Notice()
),当您只想引用它时(即,…=注意
)。此外,它看起来像是JSFIDLE抑制警报,否则您会在加载页面时立即看到警报。您可以在此处看到它正在工作:。尽管我建议将其简化为:。
window.addEventListener("load", function () {
window.Notice = function () {
alert('ok');
}
document.getElementById("L").onclick = Notice()
}, false);