1
resposta

Aula 2 - Buscando frases via Ajax (Não entendi as duas ultimas alterações)

Não consegui entender o porquê devemos colocar para dentro do evento de click o 'tempoRestante' e a 'frase'.Realmente nao consegui visualizar a difeença pois o valor dessas variaveis continua sendo o mesmo e o fato de colocar dentro do evento de click nao as afetaria.

Seguem as funções:

function inicializaCronometro() {
    var tempoRestante = $("#tempo-digitacao").text();
    campo.one("focus", function(){
    var intervalID = setInterval(function(){
        tempoRestante--;
        $("#tempo-digitacao").text(tempoRestante);
        if (tempoRestante < 1){
            clearInterval(intervalID);
            finalizaJogo();
            }
        }, 1000)
    })
}
function inicializaMarcadores(){
    var frase = $(".frase").text();
    campo.on("input", function(){
        var digitado = campo.val();
       var digitouCorreto = frase.startsWith(digitado);
        if (digitouCorreto){
            campo.addClass("borda-verde");
            campo.removeClass("borda-vermelha");
        }else{
            campo.addClass("borda-vermelha");
            campo.removeClass("borda-verde");
        }


    })
}
1 resposta

Colocamos a frase dentro do evento de input, pois a cada TECLA digitada pelo meu usuário eu quero pegar o texto da frase atual e aplicar os marcadores, até mesmo por que a função inicializaMarcadores é chamada apenas uma vez, ao iniciar o código.

Como temos a possibilidade de trocar a frase agora, se deixarmos a frase fora do evento de input , poderia acontecer que o meu usuário troque a frase inicial que já vem no HTML e o valor da variável frase ficaria desatualizado, pois este código só seria chamado uma vez.

function inicializaMarcadores(){

Deste modo, chamamos apenas uma vez quando o site é aberto:

function inicializaMarcadores(){
   var frase = $(".frase").text();
    campo.on("input", function(){
       ...

Deste modo, a variável frase é sempre atulizada quando o usuário digita, evitando que o valor da mesma fique desatualizado:

function inicializaMarcadores(){
    campo.on("input", function(){
         var frase = $(".frase").text();
         ...