Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.09.2010, 18:14
Новичок на форуме
Отправить личное сообщение для igor' Посмотреть профиль Найти все сообщения от igor'
 
Регистрация: 02.09.2010
Сообщений: 5

Назначение обработчиков Через свойство объекта
Читал статью по Введение в события Назначение обработчиков Через свойство объекта
document.getElementById('myElement').onclick = function() {
    alert('Спасибо')
}
<input id="myElement" type="button" value="Нажми меня"/>

Но когда я вынес в отдельный файл js,
<script type="text/javascript" src="script.js"></script>
document.getElementById('myElement').onclick = function() {
    alert('Спасибо')
}
работать перестало, объясните почему?
Может это как-то связано с:
Все вызовы типа getElementById должны запускаться после описания соответствующего HTML-узла, а лучше - после окончания загрузки страницы.
Иначе узел просто не будет найден

Или просто записывать иначе ?
или этот вариант используется только на html страничке ?

Последний раз редактировалось igor', 05.09.2010 в 18:21.
Ответить с цитированием
  #2 (permalink)  
Старый 05.09.2010, 18:20
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

<script type="text/javascript">
window.onload = function(){
	document.getElementById('myElement').onclick = function() {
		alert('Спасибо');
	};
};
</script>
<input id="myElement" type="button" value="Нажми меня"/>
Ответить с цитированием
  #3 (permalink)  
Старый 05.09.2010, 18:47
Новичок на форуме
Отправить личное сообщение для igor' Посмотреть профиль Найти все сообщения от igor'
 
Регистрация: 02.09.2010
Сообщений: 5

Спасибо !
Ответить с цитированием
  #4 (permalink)  
Старый 05.09.2010, 20:07
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

Igor',
да, Вы правы. Разбор html производится сверху-вниз, и если скрипт запускается из <head>, на момент, когда он работает, <body> еще не существует.

Решение - то, что предложил Monolithed, либо диспетчеризация событий на уровне документа (яркий пример - jQuery live()).
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JSON. Как в callback функции изменить свойство объекта? master_alf jQuery 10 22.04.2010 17:08
Как в событие объекта передать свойство метода DVVID Events/DOM/Window 8 22.02.2010 12:30
Объект как свойство объекта Cooskon Общие вопросы Javascript 6 16.02.2010 21:41
Передача объекта через POST Александр Иванов Общие вопросы Javascript 2 05.11.2009 16:44
Можно ли получить имя экземпляра объекта внутри самого объекта? Ichigeki Общие вопросы Javascript 9 14.11.2008 19:00