Mam już prawie kompletny kalkulator, ale występuje tutaj spory problem: liczby można dodawać tylko parami. Podam może najpierw fragment kodu, odpowiadający za ten błąd.
Kod
this.count = function() {
if(this.nCache.length > 1)
{
var m=0;
for(i=0 j=0; i<this.nCache.length; i=i+2, j++)
{
this.res[j] = this.switchFuncs(i);
m += parseInt(this.res[j]);
}
document.getElementById(sc).innerHTML = this.res[0]+"<br/>"+this.res[1]+"<br/>"+m; // tylko w ramach testów
}
else {
this.result = this.nCache[0];
}
this.lastBtAct = 'yes';
}
this.switchFuncs = function(x) {
switch(this.aCache[x])
{
case 'add':
if((this.nCache.length%2 != 0) && (x == this.nCache.length-1))
{
return parseInt(this.nCache[x]*1);
}
else {
var ipl = this.nCache[x+1];
return parseInt((this.nCache[x]*1)+(ipl*1));
}
break;
}
}
}
if(this.nCache.length > 1)
{
var m=0;
for(i=0 j=0; i<this.nCache.length; i=i+2, j++)
{
this.res[j] = this.switchFuncs(i);
m += parseInt(this.res[j]);
}
document.getElementById(sc).innerHTML = this.res[0]+"<br/>"+this.res[1]+"<br/>"+m; // tylko w ramach testów
}
else {
this.result = this.nCache[0];
}
this.lastBtAct = 'yes';
}
this.switchFuncs = function(x) {
switch(this.aCache[x])
{
case 'add':
if((this.nCache.length%2 != 0) && (x == this.nCache.length-1))
{
return parseInt(this.nCache[x]*1);
}
else {
var ipl = this.nCache[x+1];
return parseInt((this.nCache[x]*1)+(ipl*1));
}
break;
}
}
}
Problem leży w tym, że mogę dodawać tylko 2, 4, 6 (itd.) liczb. Gdy dodam np. 3+2+1 otrzymuję wynik NaN (Not-A-Number). Mam zapewne jakiś błąd przy pętli, ale nie wiem jaki...
Dziwne rozwiązanie przy opcji w switch'u? Chodzi i dodawanie kolejnych dwóch liczb lub dodanie jednej, jeśli jest to ostatni element nieparzystej tablicy.
Proszę o pomoc.
PS. W razie czego:
nCache - tablica z wklepanymi liczbami (także wielocyfrowymi),
aCache - tablica z kolejnymi działaniami (tutaj jest opracowane jedno - add - dodawanie)
// NIEAKTUALNE ;]