开发者问题收集

document.getElementById(..) 为空

2015-03-28
153

我最近开始使用 Javascript,并尝试创建一个基本的 Breakout 游戏来练习。但是,当我制作桨及其运动时,Firebug 说 document.getElementById() 为空。我已经尝试了很多方法来解决这个问题,但都没有用。有人能帮我吗?

代码:

<html>
    <head>
        <title>Paddle</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <script type="text/javascript">
            window.onload = addListeners();
            function addListeners(){
            document.getElementById('paddle').addEventListener('mousedown', mouseDown, false);
            window.addEventListener('mouseup', mouseUp, false);
            }
            function mouseDown(e){
            window.addEventListener('mousemove', cuadroMove, true);
            }

            function cuadroMove(e){
            var cuadro = document.getElementById('paddle');
            cuadro.style.position = 'absolute';
            cuadro.style.top = e.clientY + 'px';
            cuadro.style.left = e.clientX + 'px';
            }
        </script>
    </head>
    <body>
    <div style="height:500px;width:500px;background-color:green;">
        <div id="paddle" style="width:100px; background-color:red">test</div>
    </div>
    </body>
</html>
3个回答

您正尝试为 load 事件分配一个事件处理程序,但是:

window.onload = addListeners();

您正 立即 调用 addListeners 并使用返回值 ( undefined ) 作为事件处理程序。

删除 ()

Quentin
2015-03-28

这就是问题所在:

window.onload = addListeners();

它期望函数主体,而不是函数返回值,因此正确的方法是这样的:

window.onload = addListeners;
Shomz
2015-03-28

您应使用:

window.onload = addListeners;

或使用 jQuery 库 ( http://www.jquery.com ),onload 函数的快捷方式如下:

jQuery( function() {
 addListeners();
});

或:

jQuery(addListeners);

或:

window.addEventListener('load', addListeners, false);
Marek Woźniak
2015-03-28