2017-01-18 13 views
0

У меня есть plunker здесь - https://plnkr.co/edit/RZTF9uda8Cw2YQx8Gs1Y?p=previewJavaScript - nubie, window.onlaod и IIFE

Сво просто событие на кнопку

С window.onload он работает, но не с IIFE.

Я думал, что IIFE будет работать после его создания, так что это не так, как только окно загрузилось?

// (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'); 
     }) 

    }; 

ответ

2

Я думал, что IIFE будет работать, как только его создали

Да, конечно. (Это своего рода имя ...)

так это не то, что как только окно загрузилось?

И вот проблема .

Ресурс вашего скрипта встроен в голову, то есть в момент его выполнения элемент HTML, который вы пытаетесь выбрать по его идентификатору, еще не существует.

Таким образом, вам необходимо выполнить это после существования элемента (загрузка окна, DOMContentReady) или вставить внешний ресурс скрипта после соответствующих элементов HTML. (Размещение сценариев в конце тела - это общая рекомендация по производительности в любом случае.)

+1

«будет работать после его создания» - для значения «it», равного * функции *, а не * элемента *. – Quentin

+0

@Quentin да, конечно; Я предположил, что это и означает OP. – CBroe

 Смежные вопросы

  • Нет связанных вопросов^_^