document.getElementById().onmousedown не работает

<html>
<style>
#myA {
    height: 300;
    width: 300;
    background: green;
}
</style>
<body>
<script language="JavaScript">

document.getElementById('myA').onmousedown = function() {
    var a = document.getElementById('myA');
    console.log(a);
}
</script>
<div id="myA"></div>
</body>
</html>

Пожалуйста, почему код выше не работает? Когда я хочу написать console.log, я ничего не получаю, нулевое значение.


person Andrej Tk    schedule 13.02.2013    source источник


Ответы (3)


Когда ваш скрипт запускается, элемент myA еще не существует. Либо:

  • переместите ваш скрипт в конец страницы
  • поместите его в именованную функцию, которую вы вызываете из другого блока скрипта в конце страницы
  • поместите свой код в window.onload
  • используйте jQuery для запуска вашего кода после создания DOM через $().
person RichieHindle    schedule 13.02.2013

Вы должны написать скрипт под этим div. Потому что div еще не загружен. Или вы можете написать функцию и вызвать эту функцию, когда документ будет готов.

person Tom    schedule 13.02.2013

Оберните свой код в функцию и прикрепите его к событию window.onload, например:

window.onload = function(e) {
    document.getElementById('myA').onmousedown = function() {
        var a = document.getElementById('myA');
        console.log(a);
    };
};

Как сказали другие ребята, это происходит потому, что вы пытаетесь прикрепить событие к элементу, который еще не загружен.

person Thiago Pontes    schedule 13.02.2013