2013-03-15 4 views
1

Я пытаюсь использовать html5 холст и когда яHtml5 холст и Javascript document.getElementById() возвращает нуль

var c=document.getElementById('myCanvas'); 
    var ctx=c.getContext('2d'); 
    ctx.fillStyle="#FF0000"; 
    ctx.fillRect(0,0,150,75); 

и вот HTML

<!DOCTYPE html> 
    <html> 
    <head> 
    <script type="text/javascript" src="game.js"></script> 
    </head> 
    <body> 
    <canvas id="myCanvas" width="512" height="480" style="border:1px solid #000000;"> 
    </canvas> 
    </body> 
    </html> 

Я не имею понятия, что неправильно

+2

холст не загружен до того времени, вы сделаете первый звонок. попробуйте называть его при загрузке окна или готовом документе – Amitd

+0

@FelixKling Это отличный пост (хорошая работа!), не знал об этом, вызывающе закладок для более позднего. –

+0

Что вы в итоге сделали? –

ответ

6

Скорее всего, ваш скрипт запускается, прежде чем ваш DOM готов и окно загрузится, попробуйте, например:

window.onLoad=function(){ 
    var c=document.getElementById('myCanvas'); 
    var ctx=c.getContext('2d'); 
    ctx.fillStyle="#FF0000"; 
    ctx.fillRect(0,0,150,75); 
}; 
+0

Спасибо, это сработало. – lilwayne1556

+1

@ lilwayne1556 Если мой ответ был решен, вы просите, пожалуйста, примите его. –

0

Можете ли вы попытаться получить его до загрузки DOM? Попробуйте позвонить код внутри этого блока:

window.onload = function() { 
    var c=document.getElementById('myCanvas'); 
    var ctx=c.getContext('2d'); 
    ctx.fillStyle="#FF0000"; 
    ctx.fillRect(0,0,150,75); 
}; 
+1

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

+0

извините, не видел, что вы уже отправили правильный ответ ... – XiM

0

Если вы хотите получить доступ к DOM Element через javascript, убедитесь, что ваш Java код сценария должен запускается после загрузки DOM, используйте document.onload или window.onload обратных вызовов, чтобы вызвать ваш яваскрипта код ..

Наслаждайтесь Coding ..

1

Попробуйте вставить скрипт перед закрывающим тегом тела.

Как:

... 
    <script src="game.js"></script> 
</body> 
... 
Смежные вопросы