1
<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 时,我什么也没得到,空值。

4

3 回答 3

3

当您的脚本运行时,该myA元素尚不存在。任何一个:

  • 将脚本移动到页面末尾
  • 将它放在您从页面末尾的另一个脚本块调用的命名函数中
  • 把你的代码放进去window.onload
  • 在构建 DOM 后,使用 jQuery 运行您的代码,通过$().
于 2013-02-13T19:21:38.770 回答
0

您必须在该 div 下方编写脚本。因为 div 还没有加载。或者您可以在文档准备好时编写函数和此函数调用。

于 2013-02-13T19:22:05.717 回答
0

将您的代码包装在一个函数中并将其附加到 window.onload 事件,如下所示:

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

正如其他人所说,发生这种情况是因为您试图将事件附加到尚未加载的元素。

于 2013-02-13T19:32:09.580 回答