Jump to content
alexdcarvalho

Dúvida sobre um exercício em JS

Recommended Posts

Olá, eu tô tentando concluir um exercício no qual eu tenho que fazer um calculo de multiplicação entre dois números e por pro resultado aparecer num alert. Em seguinda, caso a pessoa queira fazer novamente o calculo, clicar num botão chamado Área, porém tá dando erro e eu não tô conseguindo identificar:

 

            var n1 = parseInt(prompt('Digite um número:'));
            var n2 = parseInt(prompt('Digite outro número:'));
 
            escrever(resultn1n2);
 
            function escrever(resultla) {
                var mensagem = 'O resultado é ' + (l*a);
                parseInt(mensagem);
 
                alert(mensagem);
            }
 
            function calcularArea(laal) {
                var largura = parseInt(prompt('Digite novamente um número:'));
                var altura = parseInt(prompt('Agora outro número:'));
 
                var mens = 'O resultado é ' + (la*al);
                parseInt(mens);
 
                escrever(menslaal);
 
            } 

Share this post


Link to post
Share on other sites

Então @alexdcarvalho, esse é realmente complicado, pelo menos pra mim. O que eu fiz foi o seguinte:


 

<!DOCTYPE html>
<!--Multiplica dois números reais e exibe o resultado na div "demo". 
Caso o usuário queira repetir o cálculo, basta apertar ENTER. A condicional não funciona corretamente pois NaN é um  dado do tipo número-->
<html>
<body onload= "alert('Olá! Vamos calcular a área de um objeto. Clique no botão &quot Calcule a área &quot para começarmos.')">


<p>Para calcularmos a área de uma superfície, geralmente,<br/> multiplicamos a base (b) pela altura (h) do objeto.</p>

<p id="demo"></p>
  
<button onclick ="myFunction();">Calcule a área</button>
  
<script>
function myFunction() {                           
  var x = parseFloat(prompt("Insira um número"));
  var y = parseFloat(prompt("Agora outro número"));
 
 	if (typeof x === 'number' && typeof y === 'number'  ) {document.getElementById("demo").innerHTML = "O resultado é: " + (x*y);}
	else  { document.getElementById("demo").innerHTML = "Por favor, insira números.";}
 	alert('Caso queira repetir o cálculo, aperte ENTER.');
  }
</script>
</body>
</html>

Troquei o parseInt() por parseFloat() para o usuário calcular números reais.
Multiplica dois números reais e exibe o resultado na div "demo". Caso o usuário queira repetir o cálculo, basta apertar ENTER.

Sei que não resolve seu problema, mas é porque ao ler sobre alert() e prompt() e tipos de dados em JavaScript, reparei que o método prompt() irá interpretar o valor recebido como string  e ao colocar parseInt() (ou float())  antes do prompt(), você faz a janela interpretar o string como um number data type. O problema disso está na interpretação final da função condicional: SE x for igual a um número e y também, então calcule, SENÃO diga para o usuário inserir números. Bom, acontece que NaN é um dado do tipo número,  por isso o else não irá funcionar aqui.
"Mas cara, se era pra não mostrar solução, por que então colocar isso aqui?" É que estou aprendendo também. Rode esse novo código, por favor, quem sabe você não chegue a solução primeiro? 

 

Edited by ghostdancing
Reescrevi o código

Share this post


Link to post
Share on other sites

Coloque um botão limpar imputs.

Verifique se isso resolve:

function limparDados(){
inputResultado.value = "";
calculo.la= 0;
calculo.al = 0;
calculo.calcularArea = null;
}

Share this post


Link to post
Share on other sites

 

[RESOLVIDO] @admin

<!DOCTYPE html>
<!--Multiplica dois números reais e exibe o resultado na div "demo". 
Caso o usuário queira repetir o cálculo, basta apertar ENTER.-->
<html>
<body onload= "alert('Olá! Vamos calcular a área de um objeto. Clique no botão &quot Calcule a área &quot para começarmos.')">


<p>Para calcularmos a área de uma superfície, geralmente,<br/> 
  multiplicamos a base (b) pela altura (h) do objeto.</p>

<p id="demo"></p>
  
<button onclick ="myFunction();">Calcule a área</button>
  
<script>
function myFunction() {                           
  var x = parseFloat(prompt("Insira a base do objeto"));
  var y = parseFloat(prompt("Agora a altura do objeto"));
  document.getElementById("demo").innerHTML = "A área do objeto é: " + (x*y);
    
 if (isNaN(x) || isNaN(y) || isNull(x) || isNull(y))
 {  document.getElementById("demo").innerHTML =  "Por favor, insira números.";}

 alert('Caso queira repetir o cálculo, aperte ENTER.');
  }
</script>
</body>
</html>

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By zuuzu
      Olá, estou desenvolvendo uma api para download de fotos/videos/gif, eu consegui fazer tudo certinho, mas na hora de gerar um link de download aleatório ele gera sempre o mesmo, só gera um link diferente se eu reiniciar o servidor, queria que gerasse um link diferente sempre que eu reiniciasse a página, sem precisar reiniciar o servidor. Tem como alguém me ajudar com isso? *A api está sendo desenvolvida para a automatização de download de fotos/videos/gif*

    • By Carcleo
      Tenho o seguinte:   const http = require("http") const host = "localhost" const port = "80" const Config = require("./Config") const server = http.createServer() server.on('request', (request, response) => { response.writeHead(200, {"Content-Type": "text/html; charset=utf-8"}) const { headers, method, url } = request Config.has("/", Config.home) response.end() }); server.listen(port, host)   Preciso arranjar uma forma de na Classe config, obter o headers mas sem passar ele via construtor tipo   New Config (headers)   dentro de    server.on()   Tentei, na classe Config importar o http novamente mas parece que só consigo o headers dentro do server    Alguma saída?
    • By Sapinn
      A um bom tempo atrás eu encontrei um site que dava pra mudar a cor do layout. Então eu resolvi adicionar essa propriedade em um site que estou desenvolvendo, mas não sei bem como fazer isso. Eu criei uma variável no meu arquivo css pra colocar uma cor padrão para o site então eu gostaria que o usuário quando apertasse em um palheta de cores visse como o site ficaria caso ele gostasse ele apertaria em mudar cor e essa nova cor seria a padrão do site. Eu fiz algumas buscas mas não encontrei muita coisa, infelizmente. Se alguém pudesse me ajudar eu ficaria grato. Vlw
    • By stefanyprs
      //modelo.html <!DOCTYPE html> <html lang="pt-br"> <head>     <meta charset="UTF-8">     <meta http-equiv="X-UA-Compatible" content="IE=edge">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <title>Hora do dia</title>     <link rel="stylesheet" href="estilo.css"> </head> <body onload="carregar()">     <header>         <h1> Hora do dia </h1>         </h1>     </header>     <section>         <div id="msg">             msg         </div>         <div id="foto">             <img class="imagem" src="fotomanha.jpg" alt="foto do dia">         </div>     </section>     <footer>         <p>&copy; Rodapé </p>     </footer>     <script src="script.js"></script> </body> </html>   //script.js function carregar () {     var msg = window.document.getElementById('msg')     var img  = window.document.getElementsByClassName('imagem')      var data = new Date()     var hora = data.getHours()          msg.innerHTML = 'Agora são ' + hora + ' horas'          if (hora >= 0 && hora < 12){         //Bom dia         img.src = 'fotomanha.jpg'         } else if (hora >= 12 && hora < 18){         //Boa tarde         img.src = 'fototarde.jpg'      } else {         //Boa noite         img.src = 'fotonoite.jpg'     } }   //estilo.css body{     background-color: aqua;     font: normal 15pt Arial; } header{     color:rgb(255, 255, 255);     text-align: center; } section{     background: white;     border-radius: 10px;     padding: 15px;     width: 500px;     margin:auto;     box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.329);      } footer{     color:white;     text-align: center;     font-style: italic;   } div{     text-align: center; } .imagem{     width: 500px;    /* largura da imagem */     height: 350px;   /*  altura da imagem  */     margin-top: 10px; /* margem do topo */ }
    • By WitherZx
      estou cursando na Rocketseat, e um dos exercícios de la é fazer um sisteminha de conversão de notas, de numérico para alfabético, eu fiz o exercício de duas formas, uma deu certo (com if's), porem quando tentei usar switch, deu erro, sempre caia em 'default', como posso resolver? ps: eu não quero ver a solução do vídeo pq lá provavelmente vai ensinar com if's, e isso eu já sei.
       
      function ConverteNota(nota) {     nota = Number(nota)     let notaA = (nota >= 9 && nota <= 10);     let notaB = (nota >= 8 && nota < 9);     let notaC = (nota >= 7 && nota < 8);     let notaD = (nota >= 6 && nota < 7);     let notaF = (nota < 6 && nota >= 0);       switch (nota) {         case notaA:             console.log('Nota A');             break;           case notaB:             console.log('Nota B');             break;           case notaC:             console.log('Nota C');             break;           case notaD:             console.log('Nota D');             break;           case notaF:             console.log('nota F');             break;           default:             console.log('insira uma nota valida!')             break;     }; };   ConverteNota(10);
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.