Борис Белов: я даже скажу почему) скрипт не знает на что вешать обработчик, т.к. объект в DOM-е еще не создался)) а когда скрипт внизу - все уже создалось)
Борис Белов: нет. просто надо понимать) это гораздо проще, чем запомнить. для этого есть методы проверки загрузки window.onload (в нативном JS) и $(document).ready в jquery. С проверкой - можете ставить уже куда хотите.