|
al("0x" + szNew);
form.displayHex.value = szNew;
form.displayDec.value = nCurrent;
}
В самом начале функция putNumber проверяет двоичную переменную newnumber.
Если значение этой переменной равно true, пользователь вводит первую цифру
нового числа. В этом случае функция putNumber сбрасывает содержимое текстовых
полей displayHex и displayDec, а также устанавливает значение newnumber, равное
false.
Далее функция добавляет введенную пользователем цифру спереди к переменной
szOld, равной текущему значению из поля displayHex. При этом она вызывает метод
concat из класса String, предназначенный для слияния (конкатенации) строк.
На следующем этапе к введенному шестнадцатеричному числу добавляется префикс
“0x”, после чего происходит вычисление текущего значения функцией eval. Эта
функция пытается интерпретировать текстовую строку, переданную ей в качестве
параметра, как арифметическое выражение, возвращая результат интерпретации в
виде численного значения. Этот результат сохраняется в переменной nCurrent и
отображается в текстовом поле displayDec (исходное шестнадцатеричное число
отображается в поле displayHex).
Если после ввода числа пользователь нажимает одну из четырех кнопок,
предназначенных для выполнения операций сложения, вычитания, умножения и
деления, вызываются функции, назначенные для этих кнопок в обработчике события
onClick. Это функции plusOp (сложение), minusOp (вычитание), mulOp (умножение)
и divOp (деление).
Перечисленные функции похожи друг на друга, поэтому мы ограничимся подробным
рассмотрением только одной из них, выполняющую операцию сложения:
function plusOp(form)
{
var result;
result = total + " " + lastOperation + " " +
form.displayDec.value;
total = eval(result);
lastOperation = "+";
form.displayHex.value = dec2hex(total);
form.displayDec.value = total;
newnumber = true;
}
Здесь глобальная переменная total, имеющая начальное значение, равное нулю,
используется для хранения промежуточных результатов вычислений. Она
складывается с пробелом и текстовой строкой lastOperation, затем еще с одним
пробелом и, наконец, со строкой десятичного представления введенного числа,
извлеченного из поля displayDec.
Строка lastOperation предназначена для хранения кода операции, которая
выполнялась в последний раз. Дополнительные пробелы нужны для корректной работы
с отрицательными числами.
С помощью функции eval функция plusOp вычисляет результат операции и
записывает его в переменную total. Затем в переменную lastOperation
записывается код операции сложения - строка “+”.
На следующем этапе функция plusOp преобразует значение total с помощью
функции dec2hex и отображает результат в шестнадцатеричном виде в поле
displayHex, а также в двоичном - в поле displayDec.
Перед тем как возвратить управление, функция plusOp записывает в переменную
newnumber значение true. Это приводит к тому, что при дальнейшем вводе цифр они
будут рассматриваться как цифры второго слагаемого, участвующего в операции
сложения.
Функция getResult вызывается, когда пользовател
|
|