HTML 5 canvas getElementById () возвращает значение null / undefined - PullRequest
2 голосов
/ 13 сентября 2011

вот код:

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>

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>

функция draw вызывается после инициализации карты Google, поэтому DOM уже должен был быть загружен, верно? Что я мог сделать неправильно?

Ответы [ 2 ]

4 голосов
/ 13 сентября 2011

DOM уже загружен, когда вызывается функция draw, это правильно.

Но строка var canvas = document.getElementById('control'); оценивается до этого, потому что она не входит в функцию draw. Он выполняется немедленно в <head> документа ДО того, как элементы будут отображены.

Я бы предложил вам изменить функцию инициализации на что-то подобное

var canvas,context;
function initializeMap() {
   canvas = document.getElementById('control');
   context = canvas.getContext('2d');
}
3 голосов
/ 13 сентября 2011

Если ваш javascript загружен до вашего body, тогда canvas будет undefined, потому что браузер еще не загрузил / не обработал его.

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