JavaScript - nubie,window.onlaod 和 IIFE
JavaScript - nubie, window.onlaod and IIFE
我这里有一个笨蛋 - https://plnkr.co/edit/RZTF9uda8Cw2YQx8Gs1Y?p=preview
它是按钮上的一个简单事件
使用 window.onload 可以,但不能使用 IIFE。
我认为 IIFE 创建后会 运行 所以这不是像 window 加载后那样吗?
// (function(){
// var btn = document.getElementById('btn1');
// btn.addEventListener('click', function(){
// alert('Hi');
// })
// })();
window.onload = function(){
var btn = document.getElementById('btn2');
btn.addEventListener('click', function(){
alert('Hi');
})
};
I thought the IIFE would run once its created
当然可以。 (已经有点在名字里了……)
so is that not like once the window has loaded?
这就是问题。
您的脚本资源嵌入在头部,这意味着在执行时,您尝试通过其 ID select 的 HTML 元素尚不存在。
因此您要么需要在元素存在(window加载、DOMContentReady)之后执行此操作,要么在相关的HTML之后嵌入外部脚本资源 ] 元素。 (无论如何,将脚本放在正文末尾是一般的性能建议。)
我这里有一个笨蛋 - https://plnkr.co/edit/RZTF9uda8Cw2YQx8Gs1Y?p=preview
它是按钮上的一个简单事件
使用 window.onload 可以,但不能使用 IIFE。
我认为 IIFE 创建后会 运行 所以这不是像 window 加载后那样吗?
// (function(){
// var btn = document.getElementById('btn1');
// btn.addEventListener('click', function(){
// alert('Hi');
// })
// })();
window.onload = function(){
var btn = document.getElementById('btn2');
btn.addEventListener('click', function(){
alert('Hi');
})
};
I thought the IIFE would run once its created
当然可以。 (已经有点在名字里了……)
so is that not like once the window has loaded?
这就是问题。
您的脚本资源嵌入在头部,这意味着在执行时,您尝试通过其 ID select 的 HTML 元素尚不存在。
因此您要么需要在元素存在(window加载、DOMContentReady)之后执行此操作,要么在相关的HTML之后嵌入外部脚本资源 ] 元素。 (无论如何,将脚本放在正文末尾是一般的性能建议。)