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

problema objeto

pessoal estou criando um objeto e passando como parâmetro um array, no objeto tenho um método e quero percorrer ele e mostrar seus valores, mas está dando problema. Alguém pode ajudar ? Segue o código

<html>
<head>
    <title></title>
</head>
<body>
    <input class="a" type="text">
    <input class="a" type="text">
    <input class="a" type="text">
    <input class="a" type="text">
    <input class="a" type="text">


</body>
<script type="text/javascript">

    function exemplo(arrayDeInputs){
    this.array = arrayDeInputs;

    this.x = function(array){
        array.forEach(e => {

        console.log(e.value);


        });
    }
}

var inputs = [...document.getElementsByClassName('a')];

var novo = new exemplo(inputs);

console.log(novo.array);
novo.x();

</script>
</html>
3 respostas
solução!

Olá, Thiago. Seu método x() recebe um parâmetro array, mas você não está passando nada na chamada novo.x().

Tenta dessa forma:


function exemplo(arrayDeInputs)
{
    this.array = arrayDeInputs;

    this.x = function()
    {
        this.array.forEach(e => console.log(e.value));
    }
}

Você usou o getElementsByClassName o que acabou azedando seu código (brincadeira do instrutor!). Use o document.querySelectorAll em seu lugar. Esse método, assim como getElementById, getElementsByTag name são pré-históricos e não tão versáteis quando o coleguinho QuerySelector/All.

O Carlos já apontou o problema e deu a solução. Mas se pintar dúvida, grite.

Agora eu não entendi porque você esta usando uma construtor function ao invés de classe, já que você postou essa dúvida no seu curso de ES6. Para comparar com o uso de classes?

Obrigado a todos pela a ajuda!