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

DiaMesAno sempre dá o erro "negociacao.data.getDate is not a function

Quanto tento formatar o dia mes e ano, na ordem eu recebo no navegador a mensagem do título acima. Aqui vai o meu código.

class NegociacaoControllers{

    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, indice)=> item - indice % 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);


        }
    }

Até agora tudo estava funcionando bem. Eu já tentei até colar o código que está na aula no meu, para ter certeza que não tinha escrito nada errado mas continua dando o mesmo erro. Vou mandar também o código do HTML.

<h1 class="text-center">Negociações</h1>

<form class="form" onsubmit="negociacaoController.adiciona(event)">

    <div class="form-group">
        <label for="data">Data</label>
        <input type="date" id="data" class="form-control" required autofocus/>        
    </div>    

    <div class="form-group">
        <label for="quantidade">Quantidade</label>
        <input type="number" min="1" step="1" id="quantidade" class="form-control" value="1" required/>
    </div>

    <div class="form-group">
        <label for="valor">Valor</label>
        <input id="valor" type="number" class="form-control"  min="0.01" step="0.01" value="0.0" required />
    </div>

    <button class="btn btn-primary" type="submit">Incluir</button>
</form>

<div class="text-center">
    <button class="btn btn-primary text-center" type="button">
        Importar Negociações
    </button>
    <button class="btn btn-primary text-center" type="button">
        Apagar
    </button>
</div> 
<br>
<br>

<table class="table table-hover table-bordered">
    <thead>
        <tr>
            <th>DATA</th>
            <th>QUANTIDADE</th>
            <th>VALOR</th>
            <th>VOLUME</th>
        </tr>
    </thead>

    <tbody>
    </tbody>

    <tfoot>
    </tfoot>
</table>
<!-- <script src="js/index.js"></script> -->
<script src="js/app/models/Negociacao.js"></script>
    <script>
        var negociacao = new Negociacao(new Date(), 5, 700);

        //n1._quantidade = 100000;


        //console.log(n1);
        // console.log(n1.quantidade);
        // console.log(n1.valor);
        // console.log(n1.data);
        // console.log(n1.volume);



    </script>
    <!-- <script src="js/models/Pessoa.js" ></script>

    <script >
    var pessoa = new Pessoa("Carlos", "Almeida", 47);

     var nomeCompleto = pessoa.obtemNome();
    console.log(pessoa);
    console.log(nomeCompleto);

    // var pessoa = new Pessoa('Flávio', 'Almeida');
    // console.log('Nome completo: ' + pessoa.nome + ' ' + pessoa.sobrenome);


   </script> -->

   <script src="js/app/controllers/NegociacaoControllers.js"></script>
   <script>
       let negociacaoController = new NegociacaoControllers();
   </script>

</body>
</html>

Procuro sempre procurar bastante antes de usar o Forum, mas dessa vez eu esgotei o que consegui procurar. Aguardo uma ajuda.

3 respostas

Boa tarde Valmyr,

Pode compartilhar o código da sua classe Negociação ?

Aqui está

class Negociacao { constructor(data, quantidade, valor){

    this._data = 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; } }

solução!

Oi Valmyr,

Faltou o operador new para instanciar o atributo data

this._data = new Date(data.getTime());

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