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 kernmatheus
      Boa noite,
       
      Galera, utilizo uma aplicação que me permite inserir arquivos JavaScript customizados em algumas páginas, e por vezes quando realizo alguma alteração considerável no JS, preciso solicitar aos usuários da ferramenta para limparem o cache, evitando que eles fiquem com as regras antigas do JS e gere algum erro.
       
      Existe alguma forma de esporadicamente quando eu realizar alterações no JS, forçar a limpeza de cache nas máquinas clientes? Ou então de não permitir que o navegador salve cache deste JS que eu customizo as regras?
    • By Sapinn
      Salva galera. Estou tentando usar o dropzone.js em um projeto mas estou tendo grandes dificuldades. Ele funciona aparentemente bem, mas não estou conseguindo enviar os arquivos para a pasta. Eu queria colocar mais de um dropzone na mesma pagina para arquivos diferentes como posso fazer isso? Outra coisa eu queria colocar todas as url de varios arquivos na mesma coluna em um formato json, isso possivel? Se sim como eu faria para chamar esses arquivos de volta e mostrar para o usuario??
    • By 4Unknow
      Fala galerinha beleza, bom vamos lá.
      Eu tenho um site que o conteúdo dele é tudo em uma página só, o menu, quando escolho uma opção ele leva em uma determinada parte do site referente ao menu clicado. Até aqui ok.
      Porém eu instalei um botão para voltar para o topo quando rola o site para baixo, e como sou leigo em Java, notei que parece que tá tendo conflito com o ScrollTop, pois o botão que coloquei para voltar para o topo também tem o scrolltop. Gostaria de fazer funcionar o menu e o botão juntos, pois quando desativo o .js do botão o menu  funciona normal, quando ativo o botão novamente ele para de funcionar.

      Vou deixar o código de ambos aqui.

      .JS do Menu (scroll.min.js)

       
      (function(e){"use strict";var t="ScrollIt",n="1.0.3";var r={upKey:38,downKey:40,easing:"linear",scrollTime:600,activeClass:"active",onPageChange:null,topOffset:0};e.scrollIt=function(t){var n=e.extend(r,t),i=0,s=e("[data-scroll-index]:last").attr("data-scroll-index");var o=function(t){if(t<0||t>s)return;var r=e("[data-scroll-index="+t+"]").offset().top+n.topOffset+1;e("html,body").animate({scrollTop:r,easing:n.easing},n.scrollTime)};var u=function(t){var n=e(t.target).closest("[data-scroll-nav]").attr("data-scroll-nav")||e(t.target).closest("[data-scroll-goto]").attr("data-scroll-goto");o(parseInt(n))};var a=function(t){var r=t.which;if(e("html,body").is(":animated")&&(r==n.upKey||r==n.downKey)){return false}if(r==n.upKey&&i>0){o(parseInt(i)-1);return false}else if(r==n.downKey&&i<s){o(parseInt(i)+1);return false}return true};var f=function(t){if(n.onPageChange&&t&&i!=t)n.onPageChange(t);i=t;e("[data-scroll-nav]").removeClass(n.activeClass);e("[data-scroll-nav="+t+"]").addClass(n.activeClass)};var l=function(){var t=e(window).scrollTop();var r=e("[data-scroll-index]").filter(function(r,i){return t>=e(i).offset().top+n.topOffset&&t<e(i).offset().top+n.topOffset+e(i).outerHeight()});var i=r.first().attr("data-scroll-index");f(i)};e(window).on("scroll",l).scroll();e(window).on("keydown",a);e("body").on("click","[data-scroll-nav], [data-scroll-goto]",function(e){e.preventDefault();u(e)})}})(jQuery)  
      .JS do Botão Back to top (backtotop.js)

       
      jQuery(window).scroll(function(){ if(jQuery(window).scrollTop()<50){ jQuery('#rocketmeluncur').slideUp(500); }else{ jQuery('#rocketmeluncur').slideDown(500); } var ftrocketmeluncur = jQuery("#ft")[0] ? jQuery("#ft")[0] : jQuery(document.body)[0]; var scrolltoprocketmeluncur = $('rocketmeluncur'); var viewPortHeightrocketmeluncur = parseInt(document.documentElement.clientHeight); var scrollHeightrocketmeluncur = parseInt(document.body.getBoundingClientRect().top); var basewrocketmeluncur = parseInt(ftrocketmeluncur.clientWidth); var swrocketmeluncur = scrolltoprocketmeluncur.clientWidth; if (basewrocketmeluncur < 1000) { var leftrocketmeluncur = parseInt(fetchOffset(ftrocketmeluncur)['left']); leftrocketmeluncur = leftrocketmeluncur < swrocketmeluncur ? leftrocketmeluncur * 2 - swrocketmeluncur : leftrocketmeluncur; scrolltoprocketmeluncur.style.left = ( basewrocketmeluncur + leftrocketmeluncur ) + 'px'; } else { scrolltoprocketmeluncur.style.left = 'auto'; scrolltoprocketmeluncur.style.right = '10px'; } }) jQuery('#rocketmeluncur').click(function(){ jQuery("html, body").animate({ scrollTop: '0px',display:'none'},{ duration: 600, easing: 'linear' }); var self = this; this.className += ' '+"launchrocket"; setTimeout(function(){ self.className = 'showrocket'; },800) });

      Ficaria inteiramente grato se alguém pudesse me ajudar nessa.
      Um forte abraço a toda comunidade.


       
    • By Sapinn
      Galera estou precisando de ajuda aqui em um código. Preciso criar um campo que recebe um número e retorne o maior numero consecutivo que tem naquele número, por exemplo, se for digitado o número 785141109567825 a saída seria 5678, o maior número em uma sequencia consecutiva, além disso, foi pedido que o numero zero fosse adicionado como maior, por exemplo, no número 84890 nesse caso a saída deve imprimir 90. Alguém sabe como fazer??
    • 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*

×

Important Information

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