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

aula definindo metodos

após criar o mostrarItem(), quando adiciono um elemto a lista o proximo ele acusa de ja existir mesmo sendo diferente.

7 respostas

Olá Fábio!

Pelo que entendi, você está enfrentando um problema ao adicionar um elemento à lista após criar o método "mostrarItem()". O próximo elemento que você adiciona à lista está sendo acusado de já existir, mesmo sendo diferente.

Para te ajudar, preciso entender melhor o código que você está utilizando. Será que você poderia compartilhar o código do método "mostrarItem()" e do trecho em que você adiciona um elemento à lista?

Assim, poderei analisar melhor o que pode estar causando esse problema e te ajudar a resolvê-lo.

Espero ter ajudado e bons estudos!

por onde posso compartilhar com vc?

Clica nesse ícone aqui no fórum ai você pode colar o código entre as três aspas (crases)

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Copia o código no seu VSCode da parte que interessa e cola, só os códigos.

let listaDeItens = []

const form = document.getElementById("form-itens")
const itensInput = document.getElementById("receber-item")
const ulItens = document.getElementById("lista-de-itens")

form.addEventListener("submit", function(evento){
    evento.preventDefault()
    salvarItem()
    mostrarItem()
})

function salvarItem(){
    const comprasItem = itensInput.value
    const checarDuplicado = listaDeItens.some((elemento)=> elemento.valor.toUpperCase === comprasItem.toUpperCase)
    if(checarDuplicado){
        alert("Item já existe")
    }else{
    listaDeItens.push ({
        valor: comprasItem
    })
    }

    console.log(listaDeItens)
}

function mostrarItem(){
    ulItens.innerHTML = ''
    listaDeItens.forEach((elemento,index)=>{
        ulItens.innerHTML +=`
        <li class="item-compra is-flex is-justify-content-space-between" data-value="${index}">
        <div>
            <input type="checkbox" class="is-clickable" />
            <input type="text" class="is-size-5" value="${elemento.valor}"></input>
        </div>
        <div>
            <i class="fa-solid fa-trash is-clickable deletar"></i>
        </div>
        </li>
        `
    })
}
solução!

Boa!!

O problema está ocorrendo porque você não está chamando corretamente os métodos toUpperCase nas comparações. É necessário adicionar parênteses após toUpperCase para invocar a função e obter o valor convertido em maiúsculas.

Mais ou menos isso:

const checarDuplicado = listaDeItens.some((elemento)=> elemento.valor.toUpperCase() === comprasItem.toUpperCase());

Compara com o do professor.

deu certo! muito obrigado pela ajuda

Aeee, ai sim. Eu que agradeço. Fico feliz em ajudar :D

Sempre que precisar de ajuda, você pode compartilhar o seu código dessa forma. Ajuda bastante.

Valeu Fábio.