Home > Mobile >  Unable to get canvas
Unable to get canvas

Time:08-17

I can't see why this code gives me an error line 11

 if (canvas.getContext) {...
<html lang="en-US">
  <head>
    <meta charset="UTF-8"/>
    <title>Peripheral vision checker</title>

  <script type="application/javascript">

    function draw() { if (canvas.getContext) {
      const canvas = document.getElementById('canvas');
      if (canvas.getContext) {
        const ctx = canvas.getContext('2d');

        function getRandomInt(max) {
        return Math.floor(Math.random() * max);
        }
        var x = 1000;//will be equal to window height
        var y = 100;//will be equal to window width
        ctx.arc(getRandomInt(x), getRandomInt(y), 10, 0, 2 * Math.PI);

        console.log(getRandomInt(x)   " "   getRandomInt(y));//just temporary to see they work

        ctx.fill();
    }

  }

  </script>
 </head>
 <h1>Peripheral vision checker</h1>
 <body onl oad="draw();">
   <canvas id="canvas></canvas>
 </body>
</html>

There is no css.

Any help would be greatly appreciated.

Thanks,

CodePudding user response:

You're never actually trying to get it.

In your code you've got this line. The first thing it does it check if canvas is not null, and if the function getContext is available. The following line sets canvas. It will always fail on that first check.

function draw() { if (canvas.getContext) {

Also noteworthy, in the HTML there's a missing quote causing your canvas' ID to be up for misinterpretation.

<canvas id="canvas></canvas>

Corrected code

function draw() {
  const canvas = document.getElementById('canvas');
  const ctx = canvas.getContext('2d');

  if (ctx) {
    function getRandomInt(max) {
      return Math.floor(Math.random() * max);
    }
    var x = 100; //will be equal to window height
    var y = 100; //will be equal to window width
    ctx.arc(getRandomInt(x), getRandomInt(y), 10, 0, 2 * Math.PI, 0);

    console.log(getRandomInt(x)   " "   getRandomInt(y)); //just temporary to see they work
    ctx.fillColor = "black";


    ctx.fill();
  }
}
<body onl oad="draw();">
  <canvas id="canvas"></canvas>
</body>

  • Related