3
respostas

[Dúvida] Depois que coloquei o código de responsiveVoice, o texto foi apagado do tela

Depois que coloquei o código do responsive Voice, o texto que aparecia normalmente na tela, sumiu, e mesmo apagando e voltando pro código de antes da mudança, o texto nem voltou mais, é normal ter acontecido?

3 respostas

Oii, Giuliana.

Estou aqui para ajudar, mas preciso de mais informações para entender sua dúvida.Siga as orientações do guia de como fazer uma boa pergunta no fórum e me retorne com mais informações do problema.

Aguardo seu retorno! Abraço.

Acredito que a pergunta tenha sido clara. O código completo com a inclusão do responsiveVoice:

let listaDeNumerosSorteados = [];
let numeroLimite = 10;
let numeroSecreto = gerarNumeroAleatorio();
let tentativas = 1;

function exibirTextoNaTela(tag, texto) {
  let campo = document.querySelector(tag);
  campo.innerHTML = texto;
  if ('speechSynthesis' in window) {
      let utterance = new SpeechSynthesisUtterance(texto);
      utterance.lang = 'pt-BR'; 
      utterance.rate = 1.2; 
      window.speechSynthesis.speak(utterance); 
  } else {
      console.log("Web Speech API não suportada neste navegador.");
  }
}


function exibirMensagemInicial(){
  exibirTextoNaTela('h1', 'Jogo do número secreto');
  exibirTextoNaTela('p', 'Escolha um número entre 1 e 10');
}

exibirMensagemInicial();

function verificarChute() {
  let chute = document.querySelector('input').value;
  
  if (chute == numeroSecreto){
          exibirTextoNaTela('h1', 'Acertou!');
          let palavraTentativa = tentativas > 1 ? 'tentativas': 'tentativa';
          let mensagemTentativas = `Você descobriu o número secreto com ${tentativas} ${palavraTentativa}!`; 
          exibirTextoNaTela('p', mensagemTentativas);
          document.getElementById('reiniciar').removeAttribute('disabled');
  } else {
          if (chute > numeroSecreto) { exibirTextoNaTela ('p', '0 número secreto é menor');
          } else {
                  exibirTextoNaTela('p', 'O número secreto é maior');
          }
          tentativas++;
          limparCampo();
  }
}

function gerarNumeroAleatorio() {
  let numeroEscolhido = parseInt(Math.random() * numeroLimite + 1);
  let quantidadeDeElementosNalista = listaDeNumerosSorteados.length;

  if (quantidadeDeElementosNaLista == numeroLimite) {
    listaDeNumerosSorteados = [];
  }

  if (listaDeNumerosSorteados.includes(numeroEscolhido)) {
      return gerarNumeroAleatorio();
  } else {
      listaDeNumerosSorteados.push(numeroEscolhido);
      return numeroEscolhido;
  }
}

function limparCampo(){
  chute = document.querySelector('input');
  chute.value = '';
} 

function reiniciarJogo(){
  numeroSecreto = gerarNumeroAleatorio();
  limparCampo();
  tentativas = 1;
  exibirMensagemInicial();
  document.getElementById('reiniciar').setAttribute('disabled', true);
}

Segue print da imagem que ficou após a inclusão do código de responsiveVoice: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Como pode ver, o texto sumiu e nem tem aúdio.

Oi!

Obrigada por compartilhar o código, sem ele não poderia checar se tinha algum erro no seu código. E ao revisar, vi que tem erro no app.js:

  • Erro no nome da variável: quantidadeDeElementosNaLista.
    • Você escreveu assim quantidadeDeElementosNalista com L minúsculo o que causa erros. O JavaScript diferencia maiúsculas e minúsculas em nomes de variáveis, funções e propriedades. Isso significa que l e L são tratados como caracteres distintos.

    • Corrija para:

function gerarNumeroAleatorio() {
  let numeroEscolhido = parseInt(Math.random() * numeroLimite + 1);
  let quantidadeDeElementosNaLista = listaDeNumerosSorteados.length;

  if (quantidadeDeElementosNaLista == numeroLimite) {
    listaDeNumerosSorteados = [];
  }
  • Pequeno erro na exibição do texto quando o usuário erra.
    • O código tá assim:
if (chute > numeroSecreto) { 
  exibirTextoNaTela ('p', '0 número secreto é menor');
} else {
  exibirTextoNaTela('p', 'O número secreto é maior');
}
  • "0 número secreto é menor" (o "0" deve ser "O"), assim quando o narrador falar ele não vai dizer "Zero".

    • Corrija para:

exibirTextoNaTela('p', 'O número secreto é menor');

Se o seu HTML estiver correto, tudo irá funcionar, inclusive o áudio. Lembra sempre de salvar as alterações para que elas apareçam na página.

Vou deixar o HTML da aula abaixo:

<!DOCTYPE html>
<html lang="pt-br">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- <script src="https://code.responsivevoice.org/responsivevoice.js"></script> -->
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Chakra+Petch:wght@700&family=Inter:wght@400;700&display=swap"
        rel="stylesheet">
    <link rel="stylesheet" href="style.css">
    <title>JS Game</title>
</head>

<body>

    <div class="container">
        <div class="container__conteudo">
            <div class="container__informacoes">
                <div class="container__texto">
                    <h1>Adivinhe o <span class="container__texto-azul">numero secreto</span></h1>
                    <p class="texto__paragrafo">Escolha um número entre 1 a 10</p>
                </div>
                <input type="number" min="1" max="10" class="container__input">
                <div class="chute container__botoes">
                    <button onclick="verificarChute()" class="container__botao">Chutar</button>
                    <button onclick="reiniciarJogo()" id="reiniciar" class="container__botao" disabled>Novo jogo</button>
                </div>
            </div>
            <img src="./img/ia.png" alt="Uma pessoa olhando para a esquerda" class="container__imagem-pessoa" />
        </div>
    </div>


    <script src="app.js" defer></script>
</body>

</html>
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!