Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Функция не выполняется (https://javascript.ru/forum/misc/53285-funkciya-ne-vypolnyaetsya.html)

Satansoft 28.01.2015 11:13

Функция не выполняется
 
Есть поле для ввода:
<input id="ciField" name="field" type="Text" size=30 value="" width="300px">

Есть ввод:
function take (num){
var middleNum; //переменная хранения промежуточного результата
document.getElementById("ciField").value+=num; //накапливаем вводимые цифры в поле
middleNum = document.getElementById("ciField").value; //перегоняем в промежуточную переменную
return middleNum;//вохвращаем значение в ф-ю
}


А есть вызов обработчика вводимых результатов:
td> <input name="Plus" type="Button" class="Blue" value="+" onclick="operations('+')"


И есть сам обработчик:
function operations(op){
var Md = take (num); // используем переменную из мервой функции
if (op != "=") //если не равно = (равно)
{
switch(op) //перебор принимаемых значений
{
case "+": 
document.getElementById("ciField").value = "";
Md +=document.getElementById("ciField").value;}}
else //иначе вывод
document.getElementById("ciField").value = Md;
}


Слегка покомментил, для усвояемости, а ошибок тут не вижу.

рони 28.01.2015 11:20

Цитата:

Сообщение от Satansoft
02var Md = take (num); // используем переменную из мервой функции

и чему равно num???

Satansoft 28.01.2015 16:15

Через неё вводим в поле алфавит (от 0 до 9) кнопками, вызывая соответственно:

<td colspan="2"> <input id="buttWide" name="Zero" type="Button" class="Gray" value="0" onclick='take("0")'


и.т.д до 9

Satansoft 28.01.2015 16:27

Реструктурировал, выведя middNum в глобал (В JS так можно?) и функционирует, только + не выполняет...

рони 28.01.2015 17:06

Satansoft,
http://javascript.ru/switch
http://javascript.ru/if
http://habrahabr.ru/post/237569/
Input Type: number

Satansoft 28.01.2015 19:22

В JS новичок так что с синтаксисом мог и ошибиться, сам алгоритм не выходит...

Вводим числа вызовом из html в форму
function take (num){
document.getElementById("ciField").value+=num;} //вводим в поле первое число


а далее передаем в следующую функцию знак операции и перед его анализом снова вызвать первую функцию для ввода второго операнда, эт застрявантуз, есть что предложить?

function operation (op){
midVar = document.getElementById("ciField").value; //присваиваем промежуточной переменной
document.getElementById("ciField").value = "";} // очищаем поле

//на этом этапе надо снова вызвать первую функцию для ввода второго операнда

if (op == "+"){
midVar += document.getElementById("ciField").value;
}

рони 28.01.2015 19:41

Satansoft,
может опишите алгорит того что должно быть?

Satansoft 28.01.2015 19:50

Аналог обыкновенного калькулятора под веб, застрял на схеме записи вводимых данных:

вводим первое число в поле ввода/вывода
вводим знак операции
заносим первое число в промежуточную переменную
очищаем поле
вводим второе число в поле ввода/вывода
записываем результат операции содержимого поля и промежуточной переменной в промежуточную переменную
выводим промежуточную переменную в поле ввода/вывода

поле для ввода:
<input id="ciField" name="field" type="Text" size=30 value="" width="300px">


смысл так же в том, что бы складывать можно было не 2 числа, а сколько места на "дисплее"(поле ввода/вывода) хватит.

рони 28.01.2015 20:23

Satansoft,
http://javascript.ru/forum/misc/1670...tml#post101321

Satansoft 28.01.2015 21:20

рони, по функционалу вижу, что простой, а по реализации не совсем понятно, да и графике я уделил 2 вечера html с CSS, только скриптом не вышло прикрутить две кнопки CE и % из-за спецификации ввода: 1234+567 в поле ввода/вывода. CE надлежит убрать эти 567, а как это сделать? А для подсчета %, необходимо сепарировать 1234 и 567, перезаписать в 2 переменные и подставить в формулу и как их на JS реализовать мне, на данном этапе, не ясно, а так, уже все готово.


Часовой пояс GMT +3, время: 13:45.