5
respostas

TypeError

Esta dando o seguinte erro

Uncaught TypeError: negociacao.date is undefined
    Aframe 2
        adiciona
        onsubmit

O código é

class NegociacaoController {

    constructor () {
       let $ = document.querySelector.bind(document);
       this._inputData = $('#data');
       this._inputQuantidade = $('#quantidade');
       this._inputValor = $("#valor");

    }
    adiciona(event) {
        event.preventDefault();

        let data = new Date(
            ...this._inputData.value
            .split('-')
            .map((item, index) => item - index % 2)  
        );

        let negociacao = new Negociacao(
            data,
            this._inputQuantidade.value,
            this._inputValor.value
        )

        let diaMesAno = negociacao.data.getDate() 
        + '/' + negociacao.data.getMonth() 
        + '/' + negociacao.date.fullYear();

        console.log(diaMesAno);
    }
}

Como eu poderia resolver?

Obrigado!

5 respostas

Consegui resolver os primeiros problemas, porém agora esta aparecendo NaN na data

class NegociacaoController {

    constructor () {
       let $ = document.querySelector.bind(document);
       this._inputData = $('#data');
       this._inputQuantidade = $('#quantidade');
       this._inputValor = $("#valor");

    }
    adiciona(event) {
        event.preventDefault();

        let data = new Date(
            ...this._inputData.value
            .split('-')
            .map((item, index) => item - index % 2)  
        );

        let negociacao = new Negociacao(
            data,
            this._inputQuantidade.value,
            this._inputValor.value
        )

        let diaMesAno = negociacao.data.getDate() 
        +'/'+ negociacao.data.getMonth() 
        +'/'+ negociacao.data.getFullYear();

        console.log(diaMesAno);
    }
}

"NaN/NaN/NaN" no console

Fala ai André, tudo bem? Consegue adicionar alguns consoles no código para a gente tentar entender o que pode estar ocorrendo?

Coloca uma para this._inputData.value, um para data e um para negociacao.data, ficando:

adiciona(event) {
        event.preventDefault();
    console.log(this._inputData.value)
        let data = new Date(
            ...this._inputData.value
            .split('-')
            .map((item, index) => item - index % 2)  
        );
    console.log(data)
        let negociacao = new Negociacao(
            data,
            this._inputQuantidade.value,
            this._inputValor.value
        )
    console.log(negociacao.data)
        let diaMesAno = negociacao.data.getDate() 
        +'/'+ negociacao.data.getMonth() 
        +'/'+ negociacao.data.getFullYear();

        console.log(diaMesAno);
    }

Se possível, compartilha o código da classe Negociacao tambem.

Espero ter ajudado,

Usando os 3 consoles logs saiu o seguinte

console.log(diaMesAno); "NaN/NaN/NaN"

console.log(data) a seguinte saida no console

Date Wed Oct 14 2020 00:00:00 GMT-0300 (Horário Padrão de Brasília)

para console.log(this._inputData) saiu o seguinte

O código a negociação é

class Negociacao {

    constructor (data, quantidade, valor) {
        this._data = new Date (data.getTime);
        this._quantidade = quantidade; 
        this._valor = valor;
        Object.freeze(this)
    }

    get volume() {
        return this.quantidade * this.valor;
    }

    get data() {
        return  new Date(this._data.getTime());
    }

    get quantidade() {
        return this._quantidade;
    }

    get valor() {
        return this._valor;
    }
}

class Negociacao {

constructor (data, quantidade, valor) {
    this._data = new Date (data.getTime);
    this._quantidade = quantidade; 
    this._valor = valor;
    Object.freeze(this)
}

Percebe que o erro estava nessa linha

     this._data = new Date (data.getTime) 

pois não tem as () fechando ele

Boa Andre, fico feliz que tenha achado o problema.

Sempre que precisar não deixe de criar suas duvidas.

Abraços e bons estudos.