Executando verificação de segurança...
1

Definir propriedades no HTML

Uma alternativa - como já sugerido - é inverter o controle. Em vez de deixar as regras no JavaScript, cada botão poderia indicar como ele deve ser. Para isso usamos o dataset de cada elemento. Por exemplo, o HTML ficaria assim:

<button class="btn btnWhite" data-background-color="#FFFFFF"
 data-border-radius="0" data-transition="0.6s" data-clip-path="polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%)">
Branco
</button>
<button class="btn btnBlue" data-background-color="#0000FF"
 data-clip-path="polygon(0 0, 100% 0, 50% 100%)" data-transition="0.6s">
Azul
</button>
<button class="btn btnGreen" data-background-color="#00FF00"
 data-transition="0.6s" data-clip-path="polygon(50% 0%, 100% 0%, 100% 100%)">
Verde
</button>
<button class="btn btnPink" data-background-color="#FF1493"
 data-border-radius="0" data-transition="0.6s" data-clip-path="polygon(50% 0%, 29% 100%, 71% 100%)">
Rosa
</button>

<div class="quadrado" id="quadrado"></div>

Ou seja, cada botão indica os atriubutos que quer alterar. Depois, no JavaScript, basta pegarmos esses valores para mudar o style:

function trocarCor(event) {
  const botao = event.target; // botão que foi clicado
  const quadrado = document.getElementById("quadrado");

  // verifica todas as propriedades do dataset e muda no quadrado
  for (const [prop, valor] of Object.entries(botao.dataset)) {
    quadrado.style[prop] = valor;
  }
}

// para todos os botões com a classe "btn"
for (const button of document.querySelectorAll('button.btn')) {
  // chama a função trocarCor ao ser clicado
  button.addEventListener('click', trocarCor);
}

Um detalhe chato é que no HTML o nome tem que ser, por exemplo, data-background-color. Todo atributo cujo nome começa com data- fará parte do dataset. O detalhe é que o restante (no caso, background-color) resultará em backgroundColor no JavaScript (que é justamente o que precisamos).

Assim, se vc precisar de um novo botão que mude outras propriedades, basta acrescentá-las no dataset, sem precisar alterar o JavaScript.


Definir propriedades no CSS

Outra alternativa é definir essas propriedades no CSS. Ou seja, adicione uma classe para cada cor de quadrado:

.quadradoWhite {
    background-color: #FFFFFF;
    border-radius: 0;
    transition: 0.6s;
    clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%);
}
.quadradoBlue {
    background-color: #0000FF;
    clip-path: polygon(0 0, 100% 0, 50% 100%);
    transition: 0.6s;
}
.quadradoGreen {
    background-color: #00FF00;
    transition: 0.6s;
    clip-path: polygon(50% 0%, 100% 0%, 100% 100%);
}
.quadradoPink {
    background-color: #FF1493;
    border-radius: 0;
    transition: 0.6s;
    clip-path: polygon(50% 0%, 29% 100%, 71% 100%);
}

No HTML vc acrescenta o name de cada botão:

<button class="btn btnWhite" name="White">Branco</button>
<button class="btn btnBlue" name="Blue">Azul</button>
<button class="btn btnGreen" name="Green">Verde</button>
<button class="btn btnPink" name="Pink">Rosa</button>
<div class="quadrado" id="quadrado"></div>

E no JavaScript, basta que o quadrado tenha a respectiva classe, que será quadrado + o nome do botão que foi clicado:

function trocarCor(event) {
  const botao = event.target; // botão que foi clicado
  const quadrado = document.getElementById("quadrado");
  // classe "quadrado" sempre tem
  // depois adiciona a classe da respectiva cor do botão que foi clicado
  quadrado.setAttribute('class', 'quadrado quadrado' + botao.name);
}

// para todos os botões com a classe "btn"
for (const button of document.querySelectorAll('button.btn')) {
  // chama a função trocarCor ao ser clicado
  button.addEventListener('click', trocarCor);
}
Carregando publicação patrocinada...