Код калькулятора с использованием методов
Здравствуйте!
Подскажите пожалуйста, по двум вопросам: Имеется калькулятор: <from id = 'calculator'> <table> <tr> <td> <div align="center"> <input id="screen" type="text" value="" size="16" class="display" readonly="readonly" /> </div> </td> </tr> <tr> <td class="buttons"> <div align="center"> <input id="btn_1" type="button" value="1" /> <input id="btn_2" type="button" value="2" /> <input id="btn_3" type="button" value="3" /> <input id="add" type="button" value="+" class="operator" /> </div> <div align="center"> <input id="btn_4" type="button" value="4" /> <input id="btn_5" type="button" value="5" /> <input id="btn_6" type="button" value="6" /> <input id="sub" type="button" value=" - " class="operator" /> </div> <input id="btn_7" type="button" value="7" /> <input id="btn_8" type="button" value="8" /> <input id="btn_9" type="button" value="9" /> <input id="mult" type="button" value=" * " class="operator" /> <div align="center"> <input id="clr" type="button" value=" c " class="clear" /> <input id="btn_0" type="button" value="0" /> <input id="calculate" type="button" value=" = " class="eval" /> <input id="div" type="button" value=" / " class="operator" /> </div> </td> </tr> </table> </from> var a,b,c; var action = ''; function getValue(id) { var res = document.getElementById(id).value - ''; if (!isNaN(res)) return res; } function PutNum(val) { document.getElementById("screen").value = (document.getElementById("screen").value + val)-0; } function add () { a = getValue("screen"); document.getElementById("screen").value = 0; action = "+"; } function sub() { a = getValue("screen"); document.getElementById("screen").value = 0; action = "-"; } function mult() { a = getValue("screen"); document.getElementById("screen").value = 0; action = "*"; } function div() { a = getValue("screen"); document.getElementById("screen").value = 0; action = "/"; } function clr() { document.getElementById("screen").value = 0; } function calculate() { b = getValue("screen"); switch(action) { case "+": c = a + b; break; case "-": c = a - b; break; case "*": c = a * b; break; case "/": if (b == 0) { alert('Division durch Null kann nicht sein!'); } else { c = a / b; } break; } document.getElementById("screen").value = c; } window.onload = function () { for (var i = 0; i < 10; i++) { (function (val) { document.getElementById("btn_" + val).onclick = function () { PutNum(val); } })(i); } document.getElementById("add").addEventListener("click", add); document.getElementById("calculate").addEventListener("click", calculate); document.getElementById("sub").addEventListener("click", sub); document.getElementById("mult").addEventListener("click", mult); document.getElementById("div").addEventListener("click", div); document.getElementById("clr").addEventListener("click", clr); } 1 -й Вопрос что делает функция: function PutNum(val) { document.getElementById("screen").value = (document.getElementById("screen").value + val)-0; Как я понимаю: велью а + атрибут велью б и минус 0. Можно ли как то проще написать или это вполне адекватно? )) В исполнении 0 получается промежуточное значение, т.е. оператор, как его заменить на само значение оператора, чтоб вместо ноля в калькуляторе отображался + - / *. Пробовал заменить, но минус считает криво. 2-й Вопрос, что делает эта функция, для чего используется цикл: window.onload = function () { for (var i = 0; i < 10; i++) { (function (val) { document.getElementById("btn_" + val).onclick = function () { PutNum(val); } })(i); } document.getElementById("add").addEventListener("click", add); document.getElementById("calculate").addEventListener("click", calculate); document.getElementById("sub").addEventListener("click", sub); document.getElementById("mult").addEventListener("click", mult); document.getElementById("div").addEventListener("click", div); document.getElementById("clr").addEventListener("click", clr); } 3 - й Вопрос, можно ли этот код допиписать с использованием методов: function Calculator() { var methods = { "+" : function(a,b) { return a + b; }, "-" : function(a,b) { return a - b; }, "*" : function(a,b) { return a * b; }, "/" : function(a,b) { return a / b; } } } Заранее очень Благодарен! |
Цитата:
|
2: window.onload при загрузке окна = function () выполнить функцию.
Дальше цикл для назначения обработчика событий на каждую из цифр. Дальше обработчик событий и назначение соответствующего действия для каждой кнопки. |
Спасибо Большое!
С 3-м вопросом, может кто помочь? |
Отбой Уже решил, остался вопрос только с нулем.
Есть у кого какие идеи переписать или решить ? |
Цитата:
|
Цитата:
|
рони,hbsv
Тег form есть в HTML, но в этой программе ни from, ни form не нужны - здесь нет никакого submit |
Часовой пояс GMT +3, время: 02:43. |