Wpis z mikrobloga

@TurboBlejzer: bo Twój skrypt nakłada event listener na element z id "mail", który jeszcze nie istnieje, gdy Twój skrypt jest w . HTML jest interpretowany przez przeglądarkę od góry do dołu
  • Odpowiedz
@TurboBlejzer: zakładam, że obiekt "email" nie istnieje w momencie gdy skrypt jest wywoływany w head. Dlatego np w jq masz $( document ).ready() sprawdzające czy cały DOM jest już załadowany.
  • Odpowiedz
@TurboBlejzer: tak jak @banzi napisał, w jQuery korzysta się z $(document).ready. W czystym JS też możesz to zrobić, przenieś sobie do taki js:

document.addEventListener("DOMContentLoaded", function() {
// tutaj wklej Twój kod
}

i wtedy też powinno zacząć działać, bo Twój event listener zostanie utworzony wtedy, gdy wyemitowany zostanie event "DOMContentLoaded", który jest emitowany gdy przeglądarka przeparsuje całą zawartość HTML, wszystkie skrypty itd.
  • Odpowiedz
@TurboBlejzer: Jeszcze dodam, że możesz używać skryptów w headzie, jeśli skrypt "zapakujesz" w funkcję. Czyli np. tworzysz w skrypcie funkcję clickMe(), wrzucasz co tam chcesz do niej, a potem tej funkcji używasz w body, np. dodając onclick="clickMe()" do jakiegoś przycisku.
  • Odpowiedz