Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Por que no meu código dá erro console.log

Recriei o exercício e dá erro de console.log, por que está ocorrendo? E quero entender o porquê dele?

<canvas width="600" height="400"></canvas>

<script>
    var tela = document.querySelector("canvas");
    var pincel = tela.getContext("2d");

    pincel.fillStyle = "grey";
    pincel.fillRect(0, 0, 600, 400);

    function desenhacirculo(evento) {

        var x = evento.pagex - tela.offsetLeft;
        var y = evento.pagey - tela.offsetTop;

        var raio = 10;

        console.log(x + "," + y);    

        if (evento.shiftKey) {

            raio = raio + 20;
        }

        pincel.fillStyle = "blue";
        pincel.beginPath();
        pincel.arc(x, y, raio, 0, 2 * 3.14);
        pincel.fill();

    }

        tela.onclick = desenhacirculo;

</script>
2 respostas
solução!

O problema está aqui:

var x = evento.pagex - tela.offsetLeft;
var y = evento.pagey - tela.offsetTop;

O correto é:

var x = evento.pageX - tela.offsetLeft;
var y = evento.pageY - tela.offsetTop;

Como diagnosticar o erro? Como identificar uma possível solução?

  1. Você disse que o console.log() dá erro. Qual erro?
  2. Aparece um tal de NaN,NaN. Isso significa Not a Number, não é um número, ou seja, tem algo errado com o cálculo de x e y.
  3. Onde foi definido esse cálculo? Logo acima... manda um console.log(evento) e um console.log(tela) e abra as propriedades desses objetos.
  4. Existe evento.pagex? Não, existe evento.pageX (com X maiúsculo).
  5. Trocar e testar com a propriedade. Funcionou :)

Dava NanN, NaN... Obrigada, funcionou!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software