Quando aperto o botão de subtrair codigo, como o javascript sabe que é para diminuir os valores da estatística com os valores do objeto pecas ? Eu realmente nao conseguiur ententer comos os valores objeto pecas subtraem os valores da estaticas
Quando aperto o botão de subtrair codigo, como o javascript sabe que é para diminuir os valores da estatística com os valores do objeto pecas ? Eu realmente nao conseguiur ententer comos os valores objeto pecas subtraem os valores da estaticas
Olá Iago, tudo bem contigo?
No código do curso, quando o botão de subtração é pressionado, a função manupulaDados
é chamada, passando o parâmetro operacao
como "-". Dentro dessa função, o valor do elemento peca
é obtido, convertido para um número inteiro usando parseInt
, e então é subtraído 1. Essa alteração é refletida no elemento HTML.
Em seguida, a função atualizaEstatisticas
é chamada, passando o parâmetro evento.target.dataset.peca
. Essa função percorre todos os elementos com o atributo data-estatistica
e atualiza o seu conteúdo somando o valor correspondente da propriedade no objeto pecas
.
No caso do botão de subtração, o valor da propriedade no objeto pecas
é negativo, portanto, ao somá-lo com o valor atual do elemento estatisticas
, ocorrerá uma subtração. Isso acontece porque estamos adicionando um número negativo, que é equivalente a subtrair o seu valor absoluto.
Em resumo, quando o botão de subtração é pressionado, o valor do elemento peca
é reduzido em 1, e em seguida, os valores correspondentes no objeto pecas
são subtraídos dos elementos estatisticas
, atualizando assim as estatísticas exibidas na página.
Espero que isso esclareça a sua dúvida.
Se tiver mais dúvidas, fique à vontade para perguntar!
Espero ter ajudado, abraços e bons estudos.
Desculpa Renam, mas ele não subtrai, o código possui um erro, pois ele sempre soma os valores na estatística, para subtrair é necessário alterar o código e incluir a checagem da operação igual foi feito no manipulaDados.
Observe que isso ocorre no vídeo também:
No minuto 8:46 ele os valores são Força: 58, Poder: 70, Energia: -42 e Velocidade: -10 No minuto 8:47 ele adiciona uma blindagem ficando a Força: 99, Poder: 90, Energia -42, Velocidade: -30 Logo em seguida ele retira a blindagem, na teoria deveria voltar para os valores iniciais, mas.... Não é isso que ocorre, ficando Força: 140, Poder: 110, Energia: -42 e Velocidade: -50
Código Original
function atualizaEstatisticas(peca){
estatisticas.forEach((elemento) => {
elemento.textContent = parseInt(elemento.textContent) + pecas[peca][elemento.dataset.estatistica];
})
}
Sugestão de correção
function atualizaEstatisticas(peca, operacao){
estatisticas.forEach((elemento) => {
if (operacao === "-") {
elemento.textContent = parseInt(elemento.textContent) - pecas[peca][elemento.dataset.estatistica];
} else {
elemento.textContent = parseInt(elemento.textContent) + pecas[peca][elemento.dataset.estatistica];
}
});
}
Olá Marcelo, tudo bem contigo?
Eu entendo que ocorreu esse choque de configurações nos números, peço desculpas pela pequena confusão que fiz anteriormente.
O que acontece nessa situação é que configuramos um valor padrão para os robôs, porém quando uma alteração é feita esse valor é esquecido e o código foi projetado para que a pessoa que está usando ele tenha controle dos valores, portanto como o valor inicial é somente algo padrão ele é configurado para ser sobrescrito pelo usuário.
Então não foi exatamente um erro isso ter acontecido e sim algo proposital. Mas agora pensando nessa solução que você trouxe, ela pode sim ser aplicada no seu projeto, e ela vai depender inteiramente da sua vontade, como no curso só estamos focados em ensinar o assunto usando exemplos nós ficamos muito felizes quando vocês os personalizam e aprimorar os projetos para deixar eles o mais legal que conseguirem.
Portanto, a sua sugestão até poderia ser aplicada no curso, mas como a metodologia nesse curso foi pensada para gerar uma certa autonomia de controle de valores por parte do usuário, então essa sugestão não será aplicada, mas pode vir a ser usada como um feedback para a produção de possíveis novos conteúdos da plataforma.
Em suma era isso, agradeço muito por sua interação e enorme contribuição aqui no fórum.
Fico à disposição em caso de dúvidas.
Abraços e bons estudos.