|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: May 2012
Messaggi: 22
|
[javascript] Calcolatrice con javascript non funzionante
ciao a tutti.. oggi ho provato a realizzare una calcolatrice con javascript solo che non esegue correttamente la somma e non esegue le operazioni di sottrazione, moltiplicazione e divisione; sapreste aiutarmi? vi allego il codice:
javascript: Codice:
<script type="text/javascript">
var temp = 0;
function cancella() {
temp=0;
document.getElementById("in_text_result").value="0";
document.getElementById("hidden_accum").value="";
document.getElementById("hidden_result").value="";
}
function selezione(value){
var sem = "0";
if (document.getElementById("in_text_result").value=="0") {
document.getElementById("in_text_result").value="";
}
value = document.getElementById("in_text_result").value + value;
if (sem=="0") {
var ottengo_valore_completo = parseFloat(value);
document.getElementById("in_text_result").value=value;
document.getElementById("hidden_accum").value=value;
}
}
function operazione(operatore){
/* value = 20 = .
* value = 21 = +
* value = 22 = -
* value = 23 = *
* value = 24 = /
* value = 25 = "="
*/
//verifico la presenza di operatori
valore = document.getElementById("hidden_accum").value;
switch(operatore){
case 20:
operatore=".";
break;
case 21:
temp = parseFloat(valore)+temp;
operatore="+";
document.getElementById("hidden_accum").value="";
document.getElementById("hidden_result").value=temp;
break;
case 22:
temp = parseFloat(valore)-temp;
operatore="-";
document.getElementById("hidden_accum").value="";
document.getElementById("hidden_result").value=temp;
break;
case 23:
temp = parseFloat(valore)*temp;
operatore="*";
document.getElementById("hidden_accum").value="";
document.getElementById("hidden_result").value=temp;
break;
case 24:
temp = parseFloat(valore)/temp;
operatore="/";
document.getElementById("hidden_accum").value="";
document.getElementById("hidden_result").value=temp;
break;
case 25:
document.getElementById("in_text_result").value = document.getElementById("hidden_result").value;
break;
}
if (operatore!="25") {
document.getElementById("in_text_result").value=operatore;
document.getElementById("hidden_accum").value=temp;
}
}
</script>
Codice:
<table border="0" cellpadding="3" cellspacing="3">
<tr>
<td colspan="4"><input disabled type="text" value="0" id="in_text_result" onchange=""></td>
</tr>
<tr>
<td ><input type="reset" id="button_tipe" onclick="cancella();" value="CANC"></td>
<td ><input type="button" id="button_tipe" value="*" onclick="operazione(23)"></td>
<td ><input type="button" id="button_tipe" value="/" onclick="operazione(24)"></td>
<td ><input type="button" id="button_tipe" value="-" onclick="operazione(22)"></td>
</tr>
<tr>
<td ><input type="button" id="button_tipe" value="7" onclick="selezione(7);"></td>
<td ><input type="button" id="button_tipe" value="8" onclick="selezione(8);"></td>
<td ><input type="button" id="button_tipe" value="9" onclick="selezione(9);"></td>
<td rowspan="2"><input type="button" id="button_tipe" value="+" onclick="operazione(21)"></td>
</tr>
<tr>
<td ><input type="button" id="button_tipe" value="4" onclick="selezione(4);"></td>
<td ><input type="button" id="button_tipe" value="5" onclick="selezione(5);"></td>
<td ><input type="button" id="button_tipe" value="6" onclick="selezione(6);"></td>
</tr>
<tr>
<td ><input type="button" id="button_tipe" value="1" onclick="selezione(1);"></td>
<td ><input type="button" id="button_tipe" value="2" onclick="selezione(2);"></td>
<td ><input type="button" id="button_tipe" value="3" onclick="selezione(3);"></td>
<td rowspan="2"><input type="button" id="button_tipe" value="=" onclick="operazione(25)"></td>
</tr>
<tr>
<td colspan="2"><input type="button" id="button_tipe" value="0" onclick="selezione(0);"></td>
<td ><input type="button" id="button_tipe" value="." onclick="operazione(20)"></td>
</tr>
<input type="hidden" value id="hidden_accum">
<input type="hidden" value id="hidden_result">
</table>
|
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Jan 2014
Messaggi: 852
|
Quote:
Puoi inserirla in jsfiddle? |
|
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: May 2012
Messaggi: 22
|
non sono riuscito ad importare il file sul sito... ho condiviso il file su google drive.. il link per accedervi è il seguente: https://drive.google.com/file/d/0BxL...ew?usp=sharing
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Feb 2009
Messaggi: 845
|
Ciao matteo, ci sono alcuni errori semantici: ti mostro uno stato della macchina dopo una semplice somma;
Codice:
temp = 0
---------------------
premo 9 (value = 9)
value = document.getElementById("in_text_result").value + value = "" + 9 = "9"
document.getElementById("in_text_result").value = value = "9"
document.getElementById("hidden_accum").value = value = "9"
---------------------
premo +
valore = document.getElementById("hidden_accum").value = "9"
temp = parseFloat(valore)+temp; = 9 + 0 = 9
operatore="+"
document.getElementById("hidden_accum").value = ""
document.getElementById("hidden_result").value = temp = 9
document.getElementById("in_text_result").value = operatore = "+"
document.getElementById("hidden_accum").value = temp = 9
--------------------
premo 7 (value = 7)
value = document.getElementById("in_text_result").value + value = "+" + 7 = "+7"
document.getElementById("in_text_result").value = value = "+7"
document.getElementById("hidden_accum").value = value = "+7"
--------------------
premo =
valore = document.getElementById("hidden_accum").value = "+7"
document.getElementById("in_text_result").value = document.getElementById("hidden_result").value = 9 //QUESTA SOMMA (9+7) VISUALIZZA 9
--------------------
premo +
valore = document.getElementById("hidden_accum").value = "+7"
temp = parseFloat(valore)+temp; = 7 + 9 = 16
operatore="+"
document.getElementById("hidden_accum").value = ""
document.getElementById("hidden_result").value = temp = 16
document.getElementById("in_text_result").value = operatore = "+"
document.getElementById("hidden_accum").value = temp = 16
---------------------
premo 1 (value = 1)
value = document.getElementById("in_text_result").value + value = "+" + 1 = "+1"
document.getElementById("in_text_result").value = value = "+1"
document.getElementById("hidden_accum").value = value = "+1"
--------------------
premo =
valore = document.getElementById("hidden_accum").value = "+1"
document.getElementById("in_text_result").value = document.getElementById("hidden_result").value = 16 //QUESTA SOMMA (9+7+1) VISUALIZZA 16
document.getElementById("hidden_result").value, che però viene incrementata solo quando si preme il tasto +, ignorando completamente il secondo operando! Quindi premi "9, +" e in quel momento document.getElementById("hidden_result").value diventa uguale a 9. Poi premi 7 e document.getElementById("hidden_result").value resta uguale a 9. Poi premi = e document.getElementById("in_text_result").value diventa uguale a document.getElementById("hidden_result").value, cioè a 9. La seconda somma aggiunge anche il 7 alla variabile document.getElementById("hidden_result").value portanto il totale a 16 (qualunque numero sommi dopo, io ho sommato 1 ma il risultato sarebbe stato 16 a prescindere) Per aggiustare addizione e sottrazione ti basta sostituire il case 25: Codice:
case 25:
document.getElementById("in_text_result").value = parseFloat(document.getElementById("hidden_result").value) + parseFloat(document.getElementById("hidden_accum").value);
break;
Ultima modifica di Amsirak : 12-11-2014 alle 02:24. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:23.



















