2014-01-20 5 views
0

У меня есть образец HTML страница:Как я могу получить доступ к DOM внутри функции?

<html> 
<head> 
    <script src="test.js" type="text/javascript"></script> 
</head> 
<body> 
    <button id="myButton" title="test">Test</button> 
</body> 
</html> 

корреспондент JS код:

window.onload = function_onload(); 

function function_onload() { 
    var myButton = document.getElementById("myButton"); 
    myButton.addEventListener("click", function_onclick()); 
} 

function function_onclick() { 
    alert("Hello word"); 
} 

Я не понимаю, почему переменная myButton в этом случае null. Должен ли я передать window.document в качестве параметра на function_onload? Я уже пробовал это, но он не работает.

+1

удалить '()' из 'function_onclick()' также. –

ответ

4

Из-за внешнего вида вы немедленно вызываете метод. Я считаю, что вы хотите сделать это вместо:

window.onload = function_onload 

Помните, что объект вызывается функция с круглыми скобками, которые есть то, что происходит в вашем случае. Поэтому вместо этого просто удалите их, чтобы ссылаться на функцию, а не сразу называть ее.

Кроме того, как отметил Дерик в комментариях, вы делаете то же самое со своим прослушивателем событий «click» в теле function_onload. То же самое, что и раньше, удалите круглые скобки из function_onclick, чтобы вы сами передали функцию, а не вызывали ее немедленно.

myButton.addEventListener("click", function_onclick); 
                ^^ 
                Remove parentheses here 
+3

Не забудьте его 'function_onclick()' – Deryck

+0

Ой, это верно. –

+1

Могу также внести свой вклад, пока я нахожусь в нем. http://jsfiddle.net/SfYq2/ – Deryck

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