Canvas.getcontext("2d"); Not Working
I am getting the following Error Error: Uncaught TypeError: Cannot read property 'innerHTML' of null at script.js:1 I have tried everything I could think of but nothing wor
Solution 1:
There are two things. First, you don't need .innerHTML as other answers stated. Second, you either have to run you script at the window load event like so:
window.addEventListener('load', function () {
var canvas = document.getElementById("can");
var ctx = canvas.getContext("2d");
ctx.fillStyle = ("green");
ctx.fillRect(0, 0, 300, 200);
});
Or you should load the javascript after the canvas tag.
Solution 2:
Okay there are two serious errors.
- You're trying to get the element before the DOM is fully loaded. Therefore the
canvas
note is not reachable. See addEventListener and DOMContentLoaded. - Remove
.innerHTML
. getContext appends on the node not on the content.
document.addEventListener('DOMContentLoaded', function() {
var canvas = document.getElementById("can");
var ctx = canvas.getContext("2d");
ctx.fillStyle = "green";
ctx.fillRect(0, 0, 300, 200);
});
<!DOCTYPE html><html><head><title>Canvas</title></head><body><scriptsrc="script.js"></script><!-- Canvas --><canvasid="can"width="300"height="200"style="border:4px solid red;"></canvas></body></html>
Solution 3:
1. Script error when using canvas
Use
var canvas = document.getElementById("can");
Not
var canvas = document.getElementById("can").innerHTML();
See W3C - Canvas
2. Add an event listener when the document is ready, then execute your script
See W3C - DOM Event Listener example
functiondoSomething() {
var canvas = document.getElementById("can");
var ctx = canvas.getContext('2d');
/*
another scripts...
*/
}
window.addEventListener('onload', doSomething, false);
Post a Comment for "Canvas.getcontext("2d"); Not Working"