Html 5 canvas getElementById() 返回 null/未定义

Bah*_*mut 3 html html5-canvas

这是代码:

HTML:

<body onload="initializeMap()">
    <div id="map_canvas" style="width:100%; height:100%; z-index:1"></div>
    <canvas id="control" style="width:100%; height:100%; z-index:2">Does Not Support Canvas Element</canvas>
</body>
Run Code Online (Sandbox Code Playgroud)

JavaScript:

<script type="text/javascript">
    var canvas = document.getElementById('control');
    var context = canvas.getContext('2d');

    function draw(){
        context.font = "bold 12px sans-serif";
        context.fillText("x", 248, 43);
    }
</script>
Run Code Online (Sandbox Code Playgroud)

绘制函数是在谷歌地图初始化后调用的,所以 DOM 应该已经加载了,对吗?我可能做错了什么?

Mic*_*ino 6

draw当调用该函数时,DOM 已经被加载,这是正确的。

var canvas = document.getElementById('control');-line 在此之前被评估,因为它不在 -function 中draw<head>它在元素渲染之前立即在文档中执行。

我建议你将 init 函数更改为类似的东西

var canvas,context;
function initializeMap() {
   canvas = document.getElementById('control');
   context = canvas.getContext('2d');
}
Run Code Online (Sandbox Code Playgroud)