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

3 parâmetros na function

Para que o programa funcione corretamente é necessário colocar na function "textoo", 3 parâmetros (texto,x,y) Quando retiro o x e o y, apagando assim por conseguinte o 50 e o 30, o console diz que é necessário a existência de 3 argumentos. Por que isso ocorre, já que numa função podemos colocar apenas um parâmetro?

function textoo(texto,x,y) {

    var  canvas = document.querySelector('canvas')
    var pincel = canvas.getContext('2d')


    pincel.font='20px Georgia'
    pincel.fillStyle = 'black'
    pincel.fillText(texto,x,y)

}


textoo("Qual a fração?",50,30)
6 respostas

Você declarou a função com 3 parâmetro obrigatórios e assim o interpretador java script espera que você faça.

Se usar apenas 1 dos 3 ou nenhum, o interpretador encontrará um erro de sintaxe na chamada de tal função.

Oi tharcisio, não me refiro ao erro de sintaxe. O que quero dizer é que a function pode ser utilizada com apenas um parâmetro, certo? Seguindo essa lógica, o fiz :

function textoo(texto) {

    var  canvas = document.querySelector('canvas')
    var pincel = canvas.getContext('2d')


    pincel.font='20px Georgia'
    pincel.fillStyle = 'black'
    pincel.fillText(texto)

}


textoo("Qual a fração?")

Ou seja, apaguei o x e o y e mesmo assim o console notou um erro:

3 arguments required, but only 1 present.

Estranho. Ele se refere exatamente a essa função? Ela não está redeclarada? A função tá num arquivo js separado de sua chamada? (as vezes pode ser cache).

Olhe, aqui está o programa inteiro:

<meta charset="UTF-8">
<canvas width="700" height="500"></canvas>

<script>

function desenhaQuadrado(x,y,tamanho,cor){
    var canvas = document.querySelector('canvas')
    var pincel = canvas.getContext('2d')

    pincel.fillStyle = cor
    pincel.fillRect(x,y,tamanho,tamanho)
    pincel.strokeStyle = 'black'
    pincel.strokeRect(x,y,tamanho,tamanho)

}


function textoo(texto) {

    var  canvas = document.querySelector('canvas')
    var pincel = canvas.getContext('2d')


    pincel.font='20px Georgia'
    pincel.fillStyle = 'black'
    pincel.fillText(texto)

}


textoo("Qual a fração?")

    var y = 50;
    desenhaQuadrado(50, y, 100, 'green');
    desenhaQuadrado(150, y, 100, 'green');
    desenhaQuadrado(250, y, 100, 'green');
    desenhaQuadrado(350, y, 100, 'white');
    </script>
solução!

Oi Clara, testei seu código e o erro fala o seguinte:

Uncaught TypeError: Failed to execute 'fillText' on 'CanvasRenderingContext2D': 3 arguments required, but only 1 present.
    at textoo (teste.html:26)

O que ele diz é que o fillText precisa de 3 argumentos e não a sua função.

O fillText é um método do próprio html e ele obrigatoriamente precisa desses 3 argumentos. caso você nao queira passar esses argumentos na sua função você ira precisar passar no seu método fillText, ficaria assim, por exemplo:


function textoo(texto) {

    var  canvas = document.querySelector('canvas')
    var pincel = canvas.getContext('2d')

    pincel.font='20px Georgia'
    pincel.fillStyle = 'black'
    pincel.fillText(texto, 4, 5) //aqui as coordenadas x e y, 4 e 5 respectivamente, precisam ser passadas.
}

Entendi, Vânia!! Muito obrigada :)