Modificar valor de propriedade usando método - JavaScript
28/08/2022
0
Olá, estou modificando um código JS referente a um projeto de perguntas e respostas e estou tendo um problema ao tentar mudar o valor de uma propriedade com um metodo.
A lógica do código é a seguinte:
- Tenho 2 métodos, 1 para identificar o numero da pergunta e passar a seguinte, e outro método que armazena o numero da pergunta. (getQuestionIndex e questionIndex)
- Se o usuario clicar em um determinado botão (btnnext) ele dispara um método que adiciona um valor(++) a propiedade chamada questionIndex.
- O valor padrão de questionIndex é 1
Problema::::
Ao executar um console.log(questionIndex) dentro do método 'Prox' posso verificar que ele efetivamente esta adicionando um valor quando chamado, porem não acontece nada com a página(o normal seria que ela passa a proxima pergunta).
Se eu executar this.questionIndex++ dentro de um if efetivamente a adição acontece e a pergunta troca (no código coloquei um comentario onde o código funcionaria como eu quero), más ao colocar isso dentro de um outro método que é meu objetivo, não funciona.
A lógica do código é a seguinte:
- Tenho 2 métodos, 1 para identificar o numero da pergunta e passar a seguinte, e outro método que armazena o numero da pergunta. (getQuestionIndex e questionIndex)
- Se o usuario clicar em um determinado botão (btnnext) ele dispara um método que adiciona um valor(++) a propiedade chamada questionIndex.
- O valor padrão de questionIndex é 1
Problema::::
Ao executar um console.log(questionIndex) dentro do método 'Prox' posso verificar que ele efetivamente esta adicionando um valor quando chamado, porem não acontece nada com a página(o normal seria que ela passa a proxima pergunta).
Se eu executar this.questionIndex++ dentro de um if efetivamente a adição acontece e a pergunta troca (no código coloquei um comentario onde o código funcionaria como eu quero), más ao colocar isso dentro de um outro método que é meu objetivo, não funciona.
import { Question } from "./question.js" import { UI } from "./interfaz.js" export class Quiz{ questionIndex = 1 //numero da pergunta score = 1 /** * * @param {Question[]} questions */ constructor(questions){ this.questions = questions } /** * * @returns */ get getQuestionIndex(){ //verifica o numero da pergunta return this.questions[this.questionIndex] } isEnded(){ return this.questions.length === this.questionIndex } /** * * @param answer */ set prox (questionIndex) { // se click no btnnext dispara este método this.questionIndex++ // adiciona +1 no questionIndex, aqui vai 2 simbolos de mais, não sei pq não aparece this.score++ console.log(this.questionIndex) console.log(this) } guess(answer, callback){ /** SI LA PREGUNTA ES CORRECTA */ if(this.getQuestionIndex.correctAnswer(answer)){ let correcta = document.getElementById("correct") const btnnext = document.getElementById("btnnext") const self = this correcta.classList.replace("none", "contenidocorrecto") if(incorrect.classList = "contenidoincorrecto"){ incorrect.classList.replace("contenidoincorrecto", "none") } btnnext.addEventListener('click', () => self.prox = this.prox) //se clickar no btnnext dispara o método prox // se eu colocar aqui o this.questionIndex++ ele funciona perfeitamente, porem se eu colocar no método prox ele funciona más nada acontece }else{ /** SI LA PREGUNTA ES INCORRECTA */ const incorrect = document.getElementById("incorrect") incorrect.classList.replace("none", "contenidoincorrecto") } } } // function prox(){ // console.log(this) // }
Cristian Rodriguez
Curtir tópico
+ 0
Responder
Posts
20/09/2022
Kleber Wilcke
Desculpa sou iniciante em javascript, talvez fale besteira, mas não custa tentar. Talvez se colocar um return no final da função prox, funcione, mas posso estar falando a maior besteira do mundo.
set prox (questionIndex) { // se click no btnnext dispara este método this.questionIndex++ // adiciona +1 no questionIndex, aqui vai 2 simbolos de mais, não sei pq não aparece this.score++ console.log(this.questionIndex) console.log(this) return questionIndex; //Adicione esta linha }
Responder
Clique aqui para fazer login e interagir na Comunidade :)