Пример простого калькулятора
Доброго времени суток, уважаемые форумчане. Я совсем недавно взялся за JavaScript, поэтому у меня масса, может нелепых вопросов. Я нашел пример простого калькулятора здесь: http://www.on-line-teaching.com/js/js.math.sample.htm или в песочнице http://https://jsfiddle.net/vlad35/1unqeec3/ . У меня такой вопрос. В скрипте постоянно используется переменная, принимающая то истинное, то ложное значение FlagNewNum. Мне не понятно для чего и зачем она нужна. Если есть какие-то мысли, помогите. Заранее спасибо.
|
Название переменной само за себя говорит - флаг нового числа
Эта переменная становится true когда нажато + - = / * и тд. То есть если FlagNewNum == true то поле калькулятора очищается и подставляется новая цифра в зависимости о того какая кнопка нажата, если же FlagNewNum == false то до существующего числа добавляется новая цифра путем конкатенации. |
Bond, спасибо Вам огромное!
|
Уважаемый, Bond! Если Вам не сложно, помогите мне пожалуйста еще раз. В том же калькуляторе в скрипте есть эта функция:
function Operation (Op) { var Readout = Fcalc.ReadOut.value; if (FlagNewNum && PendingOp != "=") { Fcalc.ReadOut.value = Currents; } else { FlagNewNum = true; if ( '+' == PendingOp ) Currents += parseFloat(Readout); else if ( '-' == PendingOp ) Currents -= parseFloat(Readout); else if ( '/' == PendingOp ) Currents /= parseFloat(Readout); else if ( '*' == PendingOp ) Currents *= parseFloat(Readout); else Currents = parseFloat(Readout); Fcalc.ReadOut.value = Currents; PendingOp = Op; } } Вот над ней сижу уже два дня никак понять не могу. Не могли бы Вы ее расшифровать? Заранее спасибо! Не понятны переменные Currents и PendingOp? |
Функция Operation(op) срабатывает когда нажимается кнопка + - * / =
По сути здесь вся главная магия и происходит В комменте так и написано // обработчик нажатия // кнопки действия Функция принимает один параметр - значение кнопки что бы знать какая кнопка была нажата, собственно это и есть переменная PendingOp и она принимает новое значение после нажатия кнопок действия в этой строке PendingOp = Op; и по ней же проверяется какое действие производить над переменной currents. Переменная Currents - это промежуточный результат вычисления и он выводится в поле только тогда когда нажата кнопка "=" и флаг нового числа == false (то есть когда пользователь нажал к примеру 3+3 и =) эти строки Fcalc.ReadOut.value = Currents; //Здесь выводится в поле промежуточный результат вычисления или же когда нажато не "=" и флаг нового числа == true ( то есть когда пользоваель нажал 3+3 и еще раз "+" или другое кроме =); в этих строках if (FlagNewNum && PendingOp != "=") { Fcalc.ReadOut.value = Currents; } Если же нажата одна из кнопок + - * / = то вычисляется новое значение currents. здесь if ( '+' == PendingOp ) // Если ранее был нажат плюс Currents += parseFloat(Readout); // то к текущему промежуточному значению добавляем значение поля else if ( '-' == PendingOp ) Currents -= parseFloat(Readout); // А здесь минусуем и т.д else if ( '/' == PendingOp ) Currents /= parseFloat(Readout); else if ( '*' == PendingOp ) Currents *= parseFloat(Readout); else Currents = parseFloat(Readout); Fcalc.ReadOut.value = Currents; //Здесь выводится в поле промежуточный результат вычисления PendingOp = Op; Не знаю доступно ли объяснил )) |
Да, все понятно, спасибо Вам огромное!!!
|
Часовой пояс GMT +3, время: 15:24. |