Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

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!