Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

225
Visualizações
¿Cómo cambiar el color/tamaño/etc. de los botones creados dinámicamente en javascript?

He creado botones dinámicos en vuejs donde cada botón representa una respuesta diferente a una pregunta.
Mi objetivo es: cuando respondo mal, la opción correcta se resalta en verde hasta que se muestra la siguiente pregunta.
¿También es posible cambiar otras configuraciones de estos "BaseButtons" con CSS? ¿Cómo puedo hacer esto?

 <template> <div class="container-botoes"> <BaseButton class="optionsButtons" v-for="options in optionsAnswers" :key="options.id" @click="handleAnswer(options)"> {{options.ans}} </BaseButton> </div> </template>
 methods:{ handleAnswer(options){ if (options.id === this.correctAnswer){ this.playerHit = true; } else { this.opponentHit = true; } this.nextquestion(); },
about 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Mira este:

Bloque HTML:

 <template> <div class="container-botoes"> <BaseButton v-for="(options, index) in optionsAnswers" :key="options.id" class="optionsButtons" :class="correctAnsIndex === index ? 'green-button' : 'red-button'" @click="handleAnswer(options, index)" > {{ options.ans }} </BaseButton> </div> </template>

Bloque JavaScript:

 <script> export default { data() { return { correctAnsIndex: null, } }, methods: { handleAnswer(options, index) { if (options.id === this.correctAnswer) { this.playerHit = true this.correctAnsIndex = index } else { this.opponentHit = true this.correctAnsIndex = null } this.nextquestion() }, }, } </script>

bloque CSS:

 <style> .red-button { background: red; color: white; font-weight: 700; } .green-button { background: green; color: white; font-weight: 700; } </style>

Explicación del código:

Hemos pasado el index del bucle en el método handleAnswer , donde el valor del index se asignará a la variable correctAnsIndex if options.id === this.correctAnswer y en la otra parte asignaremos valor null a la variable correctAnsIndex .

Ahora, hemos aplicado clases condicionales en el bloque HTML, donde si el index y el correctAnsIndex coinciden, entonces aplicaría la clase green-button o, de lo contrario, aplicaría la clase red-button .

Consiguiendo finalmente el resultado esperado.

about 4 years ago · Santiago Trujillo Relatório

0

Prueba esto :

 Vue.component('basebutton', { data() { return { isCorrect: false } }, props: ['answerobj'], template: `<button :class="{ 'green': isCorrect, 'white': !isCorrect}" @click="handleAnswer(answerobj)">{{ answerobj.answer }}</button>`, methods: { handleAnswer(answerobj) { if (answerobj.correct) { this.isCorrect = true } else { this.isCorrect = false } } } }); var app = new Vue({ el: '#app', data: { list: [{ question: 'Who is the tallest animal ?', optionsAnswers: [{ answer: 'Elephant', correct: false }, { answer: 'Jirafe', correct: true }, { answer: 'Lion', correct: false }, { answer: 'Zebra', correct: false }] }] } });
 .green { background-color: green; } .white { background-color: white; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script> <div id="app"> <div v-for="(item, index) in list" :key="index"> <p><strong>Question : </strong>{{ item.question }}</p> <p><strong>Answers :</strong></p> <BaseButton v-for="(options, i) in item.optionsAnswers" :key="i" :answerobj="options"> </BaseButton> </div> </div>

about 4 years ago · Santiago Trujillo Relatório

0

Una opción es crear clases css con los estilos que necesita y agregarlos al componente BaseButton según sus condiciones

about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda