Kod JavaScript
Zmienne globalne
Jak już wspomniałem, do działania kalkulatora potrzebne jest pamiętanie dwóch liczb, obecnego działania arytmetycznego i pozycji w tabeli aktualnie przetwarzanej liczby. Potrzebujemy również zmiennej, sprawdzającej, czy został kliknięty przycisk wstawiający na końcu liczby przecinek. Zatem na początku kodu musimy ustawić ich początkowe wartości.
var nums = [0, null];
var cur = 0;
var operation = " ";
var add_comma = false;
Wyświetlanie
Zaczniemy teraz od funkcji show()
, której używać będziemy do wyświetlania w odpowiednim miejscu aktualnych liczb i działania arytmetycznego. Na jej potrzeby zdefiniujemy pomocniczą funkcję myToString()
. Będzie ona działać jak zwykłe toString()
, ale w przypadku wartości null, zamiast błędu zwróci puste słowo.
function myToString(x){
if(x != null){
return x.toString();
}
else{
return "";
}
}
Teraz możemy zająć się naszą właściwą funkcją do wyświetlania. Na początek definiujemy zmienną x
, która będzie słownym zapisem nums[cur]
. Teraz musimy sprawdzić czy x
nie jest pustym słowem. Dzieje się tak wtedy, gdy użytkownik klika na przycisk operacji arytmetycznej - cur
zmienia się na 1, zaś wartość nums[1]
wynosi nadal null
. W takim przypadku pod x
podstawiamy słowny zapis nums[0]
.
function show(){
let x = myToString(nums[cur]);
if(x === ""){
x = myToString(nums[0]);
}
}
Maksymalna długość napisu, który będziemy wyświetlać w większym polu to 22 znaki. Dlatego musimy zadbać, aby zmieściły się na ekranie. Dla odpowiednio dużej długości x
zmniejszymy czcionkę w #inarea2
. Do funkcji show()
dodajemy poniższy kod.
let len = x.length;
switch (len) {
case 14:
document.querySelector("#inarea2").style.fontSize = "46px";
break;
case 15:
document.querySelector("#inarea2").style.fontSize = "43px";
break;
case 16:
document.querySelector("#inarea2").style.fontSize = "40px";
break;
case 17:
document.querySelector("#inarea2").style.fontSize = "37px";
break;
case 18:
document.querySelector("#inarea2").style.fontSize = "34px";
break;
case 19:
document.querySelector("#inarea2").style.fontSize = "31px";
break;
case 20:
document.querySelector("#inarea2").style.fontSize = "28px";
break;
}
Pozostaje nam jeszcze to, co najważniejsze, czyli samo wyświetlanie. Ustawiamy napis w #inarea2
na x
, a w #inarea
wpisujemy całe wyrażenie - nums[0]
, operation
i nums[1]
. Używamy ponownie funkcji myToString()
, aby w przypadku wartości null
wyświetlić pusty ciąg znaków.
document.querySelector("#inarea2").innerHTML = x;
document.querySelector("#inarea").innerHTML = myToString(nums[0])+operation+myToString(nums[1]);