Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

O input não está aceitando o .value

Alguem poederia me dizer o pq do .value não estar sendo reconhecido pelo vs code?

function sortear(){
    
    let quantidadesDeSorteio = document.getElementById('quantidade').value;
    let limiteDe = document.getElementById('de').value;
    let limiteAte = document.getElementById('ate').value;

}

Quanto eu escrevo .value depois de selecionar o ID da tag html, o .value aparece como um texto (abc) ao invés de uma propriedade.

Print do código diretamente do VS Code

4 respostas

Olá, mostra teu HTML.

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <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>Sorteador de números</title>
</head>

<body>
    <div class="container">
        <div class="container__conteudo">
            <div class="container__informacoes">
                <div class="container__texto">
                    <h1>Sorteador<span class="container__texto-azul"> de números</span></h1>

                    <div class="container__campo">
                        <label class="texto__paragrafo">Quantidade de números</label>
                        <input class="container__input" id="quantidade" type="number" min="1">
                    </div>
                    
                    <div class="container__campo">
                        <label class="texto__paragrafo">Do número</label>
                        <input class="container__input" id="de" type="number" min="1">
                    </div>
                    
                    <div class="container__campo">
                        <label class="texto__paragrafo">Até o número</label>
                        <input class="container__input" id="ate" type="number" min="1">
                    </div>
                </div>
                
                <div class="chute container__botoes">
                    <button onclick="sortear()" id="btn-sortear" class="container__botao">Sortear</button>
                    <button onclick="reiniciar()" id="btn-reiniciar" class="container__botao-desabilitado" >Reiniciar</button>
                </div>

                <div class="container__texto" id="resultado">
                    <label class="texto__paragrafo">Números sorteados:  nenhum até agora</label>
                </div>
            </div>

            <img src="./img/ia.png" alt="Uma pessoa com capacete de astronauta" class="container__imagem-pessoa" />
        </div>
    </div>

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

</html>
solução!

Eu fiz a estrutura de um trecho do seu código como exemplo usando seu html e fazendo o JS:

<div class="container__campo">
    <label class="texto__paragrafo">Do número</label>
    <input class="container__input" id="de" type="number" min="1">
    <button onclick="exibirValorDoInput()">Clique para Exibir Valor</button>
</div>

<script>
    function exibirValorDoInput() {        
        let valorDoInput = document.getElementById('de').value;        
        alert('Valor do input: ' + valorDoInput);
    }
</script>

Show! muito obg Miqueas. Eu dei uma alterada na posição onde as functions eram declaras e agora o pint está retornando o valor.

Estou praticando a resolução do desafio antes de ver o video dos instrutores e cheguei nesse resultado aqui:

let numeroSecreto = [];

function sortear(){

    let quantidadesDeSorteio = document.getElementById('quantidade').value;
    let limiteDe = document.getElementById('de').value;
    let limiteAte = document.getElementById('ate').value;

    function sortearDeAte(de, ate){
    
        for(quantidadesDeSorteio; quantidadesDeSorteio > 0; quantidadesDeSorteio--){
    
            let numeroAleatorio = parseInt(Math.random()* ate + 1);
            
            if(numeroSecreto.includes(numeroAleatorio)){
                sortearDeAte(de,ate)
            }else{
                if(numeroAleatorio >= de){
                    numeroSecreto.push(numeroAleatorio)
                }else{
                    sortearDeAte(de,ate)
                }
            }
        }
    }
    
    sortearDeAte(limiteDe, limiteAte)
    console.log(numeroSecreto)
}

Vou verificar como os instrutores resolveram o desafio e alterar o meu código se necessario.

att.