Fiz um codigo para atualizar o fundo e o robo conforme a escolha da cor do robo, e gostaria de saber se tem algum jeito de deixar o codigo mais generico, pois acho que está com muitas repetições
const controleRobo = document.querySelectorAll("[data-controlador-robo]")
const cores = ["Azul", "Amarelo", "Branco", "Preto", "Rosa", "Vermelho"];
let contador = 0;
controleRobo.forEach( (elemento) => {
elemento.addEventListener("click", (evento) => {
atualizaRobo(evento.target.dataset.controladorRobo, evento.target.parentNode)
atualizaCorRobo(evento.target.parentNode)
})
})
function atualizaCorRobo (controle) {
const operacaoRobo = controle.querySelector("[data-contador-robo]")
if (operacaoRobo.value == "Amarelo") {
document.querySelector("#imgRobo").setAttribute('src', 'img/robotron_amarelo.png');
document.body.style.background = '#a5922f'
} else if (operacaoRobo.value == "Branco") {
document.querySelector("#imgRobo").setAttribute('src', 'img/robotron_branco.png');
document.body.style.background = '#8F8F8F'
} else if (operacaoRobo.value == "Preto") {
document.querySelector("#imgRobo").setAttribute('src', 'img/robotron_preto.png');
document.body.style.background = '#363839'
} else if (operacaoRobo.value == "Rosa") {
document.querySelector("#imgRobo").setAttribute('src', 'img/robotron_rosa.png');
document.body.style.background = '#D458A4'
} else if (operacaoRobo.value == "Vermelho") {
document.querySelector("#imgRobo").setAttribute('src', 'img/robotron_vermelho.png');
document.body.style.background = '#FF5757'
} else {
document.querySelector("#imgRobo").setAttribute('src', 'img/robotron.png');
document.body.style.background = '#37387e'
}
}
function atualizaRobo(operacao, controle) {
const operacaoRobo = controle.querySelector("[data-contador-robo]")
if (operacao == "+") {
if (contador < cores.length - 1) {
contador++
operacaoRobo.value = cores[contador]
} else {
contador = 0
operacaoRobo.value = cores[contador]
}
} else {
if (contador > 0) {
contador--
operacaoRobo.value = cores[contador]
} else {
contador = 5
operacaoRobo.value = cores[contador]
}
}
}