Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

187
Visualizações
Javascript agrega valor de elemento li a la lista vacía si no existe

Tengo un problema en Javascript. Estoy agregando nuevos elementos de lista a los elementos 'ul' y esta lista está vacía al principio y no quiero agregar los mismos valores dos veces. Cuando escribo la declaración if, obtengo la excepción porque mi lista está vacía, por lo que el resultado es nulo. ¿Cómo puedo solucionar este problema? Gracias de antemano...

Códigos HTML

 <input type="text" id="the-filter" placeholder="Search For..." /> <div class="list-container"> <ul id="myList"></ul> <button id="button">Click</button>

Códigos JavaScript

 let newlist = document.querySelector("#myList"); const li = document.getElementsByClassName('list-group-item'); const button = document.getElementById("button"); const button.addEventListener('click' , listName); const input = document.getElementById("the-filter"); function listName() const inputVal = input.value; for (i = 0; i < li.length; i++) { if ((li[i].innerHTML.toLocaleLowerCase().includes(inputVal) && inputVal!="") || (li[i].innerHTML.toUpperCase().includes(inputVal) && inputVal!="")) { let newItem = document.createElement("li"); li[i].classList.add("list-group-item"); let textnode = document.createTextNode(li[i].innerHTML.toLocaleLowerCase()); newItem.appendChild(textnode); if((newlist.children[0].innerHTML.toLocaleLowerCase().includes(inputVal))){ newlist.insertBefore(newItem, newlist.childNodes[0]); } } } }
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Si entendí la tarea correctamente, debe agregar elementos a la lista haciendo clic en el botón.
Si existe el mismo elemento (sin distinción entre mayúsculas y minúsculas), entonces no sucede nada.

 const list = document.querySelector("#myList"); const button = document.getElementById("button"); button.addEventListener("click", listName); const input = document.getElementById("the-filter"); function listName() { const inputVal = input.value; const [...lis] = document.getElementsByClassName("list-group-item"); const same = lis.find((el) => el.textContent.toLowerCase() === inputVal.toLowerCase()); if (same) { return; } let newItem = document.createElement("li"); newItem.classList.add("list-group-item"); newItem.textContent = inputVal; list.appendChild(newItem) }
 <input type="text" id="the-filter" placeholder="Search For..." /> <div class="list-container"> <ul id="myList"></ul> <button id="button">Click</button> </div>

about 4 years ago · Juan Pablo Isaza Relatório

0

Está en el camino correcto con los detectores de eventos y la creación de elementos, pero su código original no parecía coincidir con su objetivo declarado.

Aquí hay una solución que puede resultarle útil, con algunos comentarios explicativos:

 // Identifies some DOM elements const input = document.getElementById("my-input"), newList = document.getElementById("my-list"), items = document.getElementsByClassName('list-group-item'), button = document.getElementById("my-button"); // Focuses input, and calls addItem on button-click input.focus(); button.addEventListener('click', addItem); // Defines the listener function function addItem(){ // Trims whitespace and sets string to lowerCase const inputTrimmedLower = input.value.trim().toLocaleLowerCase(); // Clears and refocuses input input.value = ""; input.focus(); // Ignores empty input if (!inputTrimmedLower) { return; } // Ignores value if a list item matches it for (const li of items) { const liTrimmedLower = li.textContent.trim().toLocaleLowerCase(); if (liTrimmedLower === inputTrimmedLower) { console.log(`${inputTrimmedLower} is already listed`); return; } } // If we got this far, we want to add the new item let newItem = document.createElement("li"); newItem.classList.add("list-group-item"); newItem.append(inputTrimmedLower); // Keeps lowerCase, as your original code newList.prepend(newItem); // More modern method than `insertBefore()` }
 <input id="my-input" /> <ul id="my-list"></ul> <button id="my-button">Click</button>

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda