practice-time-shopping-list.../scripts/app.js

70 lines
2.6 KiB
JavaScript

document.addEventListener('DOMContentLoaded', function(){
const list = []; //criar array vazio para adicionar os itens nele
const form = document.querySelector('.shopping-form');
const itemInput = document.querySelector('.shopping-form-item-input');
const quantityInput = document.querySelector('.shopping-form-quantity-input');
const incrementButton = document.querySelector('.shopping-form-increment-button');
const decrementButton = document.querySelector('.shopping-form-decrement-button');
const items = document.querySelector('.shopping-items');
incrementButton.addEventListener("click", incrementQuantity);
decrementButton.addEventListener("click", decrementQuantity);
form.addEventListener("submit", addItemToList);
function incrementQuantity(){
const currentValue = Number(quantityInput.value); //era string, passa ser numero
const newValue = currentValue +1; //adiciona +1
quantityInput.value = newValue; //adiciona o num atualizado no input
}
function decrementQuantity(){
const currentValue = Number(quantityInput.value); //era string, passa ser numero
const newValue = currentValue -1; //adiciona +1
if(newValue > 0){
quantityInput.value = newValue; //adiciona o num atualizado no input
}
}
function addItemToList(event){
event.preventDefault(); //evitar o padrao, que é atualizar a pag e passar parametros na url
const itemName = event.target["item-name"].value; //pegar valor do input name
const itemQuantity = event.target["item-quantity"].value; //pegar valor do input quantity
if(itemName !== ""){ //se o input nao estiver vazio, criar um objeto
const item = {
name: itemName,
quantity: itemQuantity,
}; //criar objeto com os parametros recebidos
list.push(item); //adicionar o objeto no array
renderListItems(); //chamar a funcao que renderiza os itens
resetInputs(); //chamar a funcao que reseta os inputs
}
}
function renderListItems(){
let itemsStructure = "";
list.forEach(function(item) {
itemsStructure += `
<li class="shopping-item">
<span>${item.name}</span>
<span>${item.quantity}</span>
</li>
`;
});
items.innerHTML = itemsStructure; //adiciona na const items(que é a div), um foreach do itemsstruture
}
function resetInputs(){ //resetar valor inputs
itemInput.value = "";
quantityInput.value = 1;
}
})