xCalc2

Publicado por EVERTON DA ROSA 02/01/2008

[ Hits: 5.033 ]

Homepage: http://everton3x.github.io

Download calc2.zip




A segunda versão da xCalc sofreu diversos aprimoramentos, principalmente no que se refere aos atalhos de teclado para interação com a memória.

Atalhos:

q, w, e, r para incluir números na memória.

a, s, d, f para resgatar números da memória.

z, x, c, v para somar o número do visor ao valor da memória.

e u, i, o, p para subtrair o número do visor do valor da memória.

Esc apaga o visor e limpa todas as memórias.

  



Esconder código-fonte

<html>
<head>
<title>xCalc</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style>
#fita {
   display: block;
}

#visor {
   display: block;
}

#entrada {
   display: block;
   background-color: Silver;
}

input, textarea {
   border: thin solid Black;
}
</style>

<script language="JavaScript">
var entrada;
var visor;
var fita;

function focar(){
   entrada = document.getElementById('entrada');
   visor = document.getElementById('visor');
   fita = document.getElementById('fita');
   entrada.focus();
}

function calcula(){
   var expressao = entrada.value;
   var resultado = eval(expressao);
   visor.value = resultado;
   entrada.value = resultado;
   fita.value += expressao + '\n' + '= ' + resultado + '\n' + '************** \n';
   fita.scrollTop = fita.scrollHeight;
   focar();
}

function limpaEntrada(){
   entrada.value = '';
   window.event.keyCode = false;
}

function limpaMemorias(){
   document.getElementById('mem1').value = '';
   document.getElementById('mem2').value = '';
   document.getElementById('mem3').value = '';
   document.getElementById('mem4').value = '';
   window.event.keyCode = false;
}

function putMem(id){
   var mem = document.getElementById(id);
   mem.value = visor.value;
}

function getMem(id){
   var mem = document.getElementById(id);
   entrada.value += mem.value;
}

function sumMem(id){
   var mem_ = parseFloat(document.getElementById(id).value);
   var visor_ = parseFloat(visor.value);
   var valor = mem_ + visor_;
   document.getElementById(id).value = valor;
}

function minusMem(id){
   var mem_ = parseFloat(document.getElementById(id).value);
   var visor_ = parseFloat(visor.value);
   var valor = mem_ - visor_;
   document.getElementById(id).value = valor;
}

function checkKey(){
   var key = window.event.keyCode;
   if(key == 44){
      window.event.keyCode = 46;
   }
   
   if(key == 13){
      calcula();
   }
   if(key == 27){
      limpaEntrada();
   }
   if(key == 39){
      limpaMemorias();
   }
   
   if(key == 113){
      putMem('mem1');
      window.event.keyCode = false;
   }
   if(key == 119){
      putMem('mem2');
      window.event.keyCode = false;
   }
   if(key == 101){
      putMem('mem3');
      window.event.keyCode = false;
   }
   if(key == 114){
      putMem('mem4');
      window.event.keyCode = false;
   }
   
   if(key == 97){
      getMem('mem1');
      window.event.keyCode = false;
   }
   if(key == 115){
      getMem('mem2');
      window.event.keyCode = false;
   }
   if(key == 100){
      getMem('mem3');
      window.event.keyCode = false;
   }
   if(key == 102){
      getMem('mem4');
      window.event.keyCode = false;
   }
   
   if(key == 122){
      sumMem('mem1');
      window.event.keyCode = false;
   }
   if(key == 120){
      sumMem('mem2');
      window.event.keyCode = false;
   }
   if(key == 99){
      sumMem('mem3');
      window.event.keyCode = false;
   }
   if(key == 118){
      sumMem('mem4');
      window.event.keyCode = false;
   }
   
   if(key == 117){
      minusMem('mem1');
      window.event.keyCode = false;
   }
   if(key == 105){
      minusMem('mem2');
      window.event.keyCode = false;
   }
   if(key == 111){
      minusMem('mem3');
      window.event.keyCode = false;
   }
   if(key == 112){
      minusMem('mem4');
      window.event.keyCode = false;
   }
}

</script>
</head>

<body onload="focar();">
<table border="0">
   <tr>
      <td>
         <textarea id="fita" rows="10" cols="25" readonly></textarea>
         <input type="text" id="visor" size="30" readonly>
         <input type="text" id="entrada" size="30" onkeypress="checkKey()">
      </td>
      <td>
         <table border="0">
            <tr>
               <td></td>
               <td>></td>
               <td><</td>
               <td>+</td>
               <td>-</td>
            </tr>
            <tr>
               <td><input type="text" id="mem1" size="10" readonly></td>
               <td>q</td>
               <td>a</td>
               <td>z</td>
               <td>u</td>
            </tr>
            <tr>
               <td><input type="text" id="mem2" size="10" readonly></td>
               <td>w</td>
               <td>s</td>
               <td>x</td>
               <td>i</td>
            </tr>
            <tr>
               <td><input type="text" id="mem3" size="10" readonly></td>
               <td>e</td>
               <td>d</td>
               <td>c</td>
               <td>o</td>
            </tr>
            <tr>
               <td><input type="text" id="mem4" size="10" readonly></td>
               <td>r</td>
               <td>f</td>
               <td>v</td>
               <td>p</td>
            </tr>
         </table>
      </td>
   </tr>
</table>
</body>
</html>

Scripts recomendados

Log JavaScript cross browser

JSOO - Classe para manipular Querystring

Redirecionador de acordo com o browser

Cálculo de frete/correios utilizando Ajax

Tabela paginada e com diferenciação de cor nas linhas


  

Comentários
[1] Comentário enviado por removido em 02/01/2008 - 18:23h

Mas esta cadeia de ifs, um depois do outro. Algum motivo especial para não usar um switch, que é mais elegante?

[2] Comentário enviado por everton3x em 08/02/2008 - 12:04h

nenhum motivo em especial... apenas não "lembrei" do switch quando estava fazendo o script...... com certeza vai aparecer na próxima versão... valeu!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts