Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found
Not Found

Submitted

Interactive rating JS solution (HTML, CSS, JS)

@JoaoCardosoDev

Desktop design screenshot for the Interactive rating component coding challenge

This is a solution for...

  • HTML
  • CSS
  • JS
1newbie
View challenge

Design comparison


SolutionDesign

Solution retrospective


  • What is the best method to change from the rating selection slate to the thank you slate? I got it working but I'm curious if there is a better method or even a standard for it.

Community feedback

@lucasbsand

Posted

Parabéns pelo design, ficou extremamente parecido! Eu vi seu código e observei que a maneira como você escreveu não é das mais performáticas, se não se importa, aqui vai algumas sugestões:

  1. No seu html, onde você colocou os botões, poderia ser utilizado um formulário como container e inputs do tipo rádio, além de um button do tipo submit. Exemplo:
<form>
  <input type="radio" name="rating" id="rating-1" value="1"/ >
  <label for=rating-1>1</label>
...

  <button type="submit">Submit</button>
</form>

Dessa forma, você ganha vantagens na hora em que for manipular o seu formulário com js, por exemplo, você pode pegar o valor do input cujo valor foi enviado da seguinte da seguinte forma:

const myForm = document.querySelector("form")

myForm.addEventListener("submit", (e) => {
  // Previne o comportamento padrão do evento
  e.preventDefault()

  // define a variável value com o valor do input Rating selecionado quando o evento de envio de formulário é ativado
  const value = myForm.rating.value
  console.log(value)
})

O que esse código faria seria criar uma constante chamada myForm e adicionar um evento de submit (envio de formulário) nele e então mostrar no console o valor que eu estou enviando com o meu input.

Sobre a troca dos cards, uma maneira que poderia ajudá-lo a poupar algumas linhas no seu js e tornar seu código mais limpo, seria escrever ambos os card em seu html e realizar a troca deles usando js, por exemplo:

const myCards = document.querySelectorAll(".cards")

// isso seria feito após o envio dos dados do formulário, claro
myCards[0].style.display = 'none';
myCards[1].style.display = 'flex';

A vdd é que existem muitas maneiras diferentes de se chegar a um mesmo resultado, as formas como eu disse aqui talvez não sejam as mais eficazes possíveis tbm, mas foi uma das formas mais fáceis que eu pensei de fazer num primeiro momento usando html e js puro.

Se alguém quiser pontuar algo que eu possa ter passado de maneira errada, ou outras formas de realizar essas tarefas, tbm estou disposto a ouvir.

E desculpe caso tenha ficado confuso o que eu quis dizer, estou no celular e minha tela é bugada haha

Marked as helpful

1

@JoaoCardosoDev

Posted

Muito obrigado pela resposta tão completa e cuidada. Agradeço imenso o tempo que dispensou para me dar feedback. As suas sugestões são excelentes, e vou com certeza levar o seu feedback para futuros projetos! @lucasbsand

1

@lucasbsand

Posted

De nada, mano, tamo ai pra isso! @JoaoCardosoDev

1

Please log in to post a comment

Log in with GitHub
Discord logo

Join our Discord community

Join thousands of Frontend Mentor community members taking the challenges, sharing resources, helping each other, and chatting about all things front-end!

Join our Discord