Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Сложение значений переменных. (https://javascript.ru/forum/dom-window/80022-slozhenie-znachenijj-peremennykh.html)

ureech 18.04.2020 10:51

Сложение значений переменных.
 
<input class="form-control" type="text" name="mykal" value=""/>
<input class="form-control" type="text" name="mykal" value=""/>
<input class="form-control" type="text" name="mykal" value=""/>
.....

Вначале есть только первый инпут.В него из базы аяксом получаю значение. например
var item = 1;
// и вставляю в поле
document.forms['my-recept'].mykal.value       = item;

Затем добавляю следующий импут и тд. Как мне в какую то переменную плюсовать значения,что бы потом вывести общую сумму? Цикл не хочется, так как каждый раз он будет считать по новой.

laimas 18.04.2020 11:23

Что за язык на сервере и как получает он затем форму? Если это РНР и если используется стандартное, то набор полей name="mykal" на сервере в итоге будет один значением, последним.

PS. Каким образом затем понять какой записи в базе соответствует поле если не видно связей?

ureech 18.04.2020 11:38

laimas,
Да,на сервере php. Что то я тупанул,что можно там считать.
Цитата:

Сообщение от laimas
PS. Каким образом затем понять какой записи в базе соответствует поле если не видно связей?

У каждых вновь добавляемых импутов сейчас своя форма.

laimas 18.04.2020 11:41

Цитата:

Сообщение от ureech
У каждых вновь добавляемых импутов сейчас своя форма.

И что? Сервер вообще не подозревает о формах, он получает данные в виде набора параметров. Как сервер будет знать что пришедший параметр mykal нужно соотнести с записью N в базе?

ureech 18.04.2020 12:02

Цитата:

Сообщение от ureech
У каждых вновь добавляемых импутов сейчас своя форма.

Это не к серверу, а к связям в js

laimas 18.04.2020 12:09

ureech, вы что вообще пытаетесь сделать? По коду не видно, чтобы было множество форм. Если это не ради забавы делается и будет отправляться на сервер, то сервер ничего не получится.

ureech 18.04.2020 12:25

Да нет,Не ради забавы. Да в коде не стал указывать. Ок. Тогда так.
/**********************************************************/
<form name="form_search1" id="form_search1" method="POST" action="" >
<input class="form-control" type="text" name="myname" value=""/>
<button onclick="Search_Item();" class="btn btn-light"  type="button"></button>
</form>
<form name="my-recept1" id="my-recept1" method="POST" action="" >
<input class="form-control" type="text" name="mykal" value=""/>
</form>
/***********************************************************/
<form name="form_search2" id="form_search2" method="POST" action="" >
<input class="form-control" type="text" name="myname" value=""/>
<button onclick="Search_Item();" class="btn btn-light"  type="button"></button>
</form>
<form name="my-recept2" id="my-recept2" method="POST" action="" >
<input class="form-control" type="text" name="mykal" value=""/>
</form>
/*************************************************************/

И тд.
Каждый раз в value формы my-recept добавляются значение,которые и нужно складывать по мере добавления.
Конечно я могу и на сервере складывать и передовать клиенту,но зачем,если можно и на этой стороне сделать. Можно и что то типа localStorage.., не знаю. Может получше решение есть).

laimas 18.04.2020 12:46

Складывать, это действие, которое можно производить над данными полученными от сервера. А форма, это для отправки данных на сервер. Если нужно только сложить тогда зачем форма? А если нужно отправить, то для кого?

ureech 18.04.2020 13:19

Блин,laimas, ей богу. К чему всё это? Я в курсе для чего,что служит.В дальнейшем,всё что нужно отправится куда нужно). Какое это имеет отношение к вопросу?

laimas 18.04.2020 13:25

Цитата:

Сообщение от ureech
К чему всё это?

Вот именно, к чему?

Цитата:

Сообщение от ureech
В дальнейшем,всё что нужно отправится куда нужно

Уверены?

Если даже в том, что у вас в коде есть нечто разумное, то это какая-то околесица. Уверен, что вы подходите к решению какой-то задачи неверным путем.

ureech 18.04.2020 13:32

В чём вообще можно быть уверенным)? И что есть верное или не верное)? Вы задаёте философские вопросы. Каждый решает задачу основываясь на свои знания и опыт). Поживём увидим,верно или нет).

Malleys 18.04.2020 13:33

Цитата:

Сообщение от ureech
Каждый раз в value формы my-recept добавляются значение,которые и нужно складывать по мере добавления.

А при обновлении страницы состояние приложения (данные форм — подсчитанные суммы и добавленные поля) должно сохраняться или всё заново должно запрашиваться?

А то, что вы писали про циклы (типо, зачем заново каждый раз считать) — можно завести состояние формочки, в котором будет храниться сумма, которая будет обновляться при добавлении нового поля. Правда такая предварительно вычисленная сумма достаточно просто обрабатывается при элементах формы только для чтения.

Если эти элементы формы можно изменять (изменять значения), то проще всё-таки подсчитать сумму когда она нужна!

Цитата:

Сообщение от ureech
Каждый раз в value формы my-recept добавляются значение,которые и нужно складывать по мере добавления.

Каким образом они добавляются?

laimas 18.04.2020 13:41

Цитата:

Сообщение от ureech
Вы задаёте философские вопросы.

Какая там философия, просто опишите задачу, хотя бы в общих чертах, которую вы решаете.

Malleys 18.04.2020 13:52

Цитата:

Сообщение от laimas
Какая там философия, просто опишите задачу, хотя бы в общих чертах, которую вы решаете.

Вам к этому больше нечего добавить? И какое это имеет отношение лично к ureech?

ureech 18.04.2020 13:56

Цитата:

Сообщение от Malleys
А при обновлении страницы состояние приложения (данные форм — подсчитанные суммы и добавленные поля) должно сохраняться или всё заново должно запрашиваться?

Эти все данные уйдут на сервер, а страница обнулится.
Цитата:

Сообщение от Malleys
можно завести состояние формочки, в котором будет храниться сумма, которая будет обновляться при добавлении нового поля.

Вот такое примерно и нужно. Как складывать то эти суммы?

Nexus 18.04.2020 13:59

Цитата:

Сообщение от ureech
Вначале есть только первый инпут.В него из базы аяксом получаю значение.

Почему из бд не получить сразу все значения и их сумму?

ureech 18.04.2020 13:59

Пока делаю через localStorage.

ureech 18.04.2020 14:00

Цитата:

Сообщение от Nexus (Сообщение 523006)
Почему из бд не получить сразу все значения и их сумму?

Можно и получить. Но лучше на клиенте. И суммы сразу нет. Её нужно считать при каждом запросе.Это что, сложнее?

ureech 18.04.2020 14:03

Цитата:

Сообщение от laimas
Какая там философия, просто опишите задачу, хотя бы в общих чертах, которую вы решаете.

В общих чертах и объяснил.Ту часть,что нужно решить. Код большой, а то бы выложил.

Nexus 18.04.2020 14:04

Цитата:

Сообщение от ureech
Это что, сложнее?

У вас же возникли с этим сложности :)

Цитата:

Сообщение от ureech
Но лучше на клиенте.

Чем лучше?
Слишком много записей или Вы считаете, что серверу обработать 1000 запросов легче, чем единовременно выдать массив данных?

ureech 18.04.2020 14:06

Цитата:

Сообщение от Malleys
Если эти элементы формы можно изменять (изменять значения), то проще всё-таки подсчитать сумму когда она нужна!

Тот кто добавляет должен видеть получаемую сумму

laimas 18.04.2020 14:06

Цитата:

Сообщение от ureech
В общих чертах и объяснил.

Нет, то что вы показываете, это только часть некой задачи, а не сама задача. И судя по дальнейшим постам, вы делает лишнее и совсем не нужное.

ureech 18.04.2020 14:10

Цитата:

Сообщение от Nexus
Чем лучше?
Слишком много записей или Вы считаете, что серверу обработать 1000 запросов легче, чем единовременно выдать массив данных?

В том то и дело,что не единовременно. Пришо значение на сервер. Записали в переменную. Но хранить её всё равно где то надо,до тех пор пока не придёт другое значение. Потом их сложить,записать,вернуть.

Nexus 18.04.2020 14:11

Цитата:

Сообщение от ureech
В общих чертах и объяснил.Ту часть,что нужно решить.

Как хотите, Вам предлагали помощь в поиске оптимального решения Вашей задачи.

Попробуйте воспользоваться этим кодом:
var appendNewValue = (function (sumInput) {
    var sum = 0;
    
    return function (newValue) {
        sum += +newValue;
        sumInput.mykal.value = sum;
        
        return sum;
    };
})(document.forms['my-recept'].mykal);

// При загрузке страницы
appendNewValue(/* значение из инпута, который уже есть на странице */);

// При получении нового значения из бд
appendNewValue(/* новое значение */);

ureech 18.04.2020 14:11

Цитата:

Сообщение от laimas
Нет, то что вы показываете, это только часть некой задачи, а не сама задача. И судя по дальнейшим постам, вы делает лишнее и совсем не нужное.

Возможно и так. Но возможно просто так кажется,так как не видна картина в целом)

Nexus 18.04.2020 14:13

Цитата:

Сообщение от ureech
Пришо значение на сервер. Записали в переменную. Но хранить её всё равно где то надо,до тех пор пока не придёт другое значение.

Почему не хранить его в файле, БД?

ureech 18.04.2020 14:14

Цитата:

Сообщение от Nexus
Как хотите, Вам предлагали помощь в поиске оптимального решения Вашей задачи.

Да я понимаю. Спасибо).

ureech 18.04.2020 14:14

Цитата:

Сообщение от Nexus (Сообщение 523016)
Почему не хранить его в файле, БД?

И каждый раз вытаскивать из базы?

Nexus 18.04.2020 14:16

Цитата:

Сообщение от ureech
И каждый раз вытаскивать из базы?

Да или из файла.
Можете запустить процесс на nodejs, который будет хранить это значение в оперативной памяти.

P.S. я бы не стал в RAM хранить что-то, что можно навсегда потерять. Только не важную информацию или то, что можно легко восстановить.

ureech 18.04.2020 14:20

Цитата:

Сообщение от Nexus
Да, или из файла.
Можете запустить процесс на nodejs, который будет хранить это значение в оперативной памяти.

Всё это очень сложно для такой задачи. Зачем нужны лишние запросы? Их там и так хватает).

ureech 18.04.2020 14:29

Изначально есть две формы. Одна поисковая,другая просто текстовая. В текстовой четыре импута. Я ввожу в поисковую слово и запускаю поиск по базе. Получаю список. Из него выбираю нужное мне название.Кликаю). Это название заносится в поисковый инпут, а его параметры в остальные четыре. Далее нажимаю кнопку"Добавить". Js формирует ещё две такие же формы, но уже с другим именем. И я снова повторяю поиск и тп. Когда я остановлюсь, то значение всех форм отправлю по назначению.На сервер.
Теперь мне нужна ещё одна форма или таблица или блок,не важно,куда будут записываться суммы параметров. Что бы я видел когда мне остановиться. Как сделать такую беду я знаю, а вот как записывать туда сумму нет. Отсюда был и вопрос.
Да,забыл добавить,что все манипуляции,кроме запроса к базе,на стороне клиента.

ureech 18.04.2020 14:33

И теперь ответьте как всё это влияет на решение моего вопроса)?

Malleys 18.04.2020 14:55

Цитата:

Сообщение от ureech
Да,забыл добавить,что все манипуляции,кроме запроса к базе,на стороне клиента.

Если нет никакой записи в базу (я имею в виду, что со стороны клиента нет таких запросов, которые изменяют базу), а только чтение из базы (типо поиск или отображение информации), то можно в начале скачать все данные из базы (например, в формате JSON, и поскольку в базу не производится запись, то такой JSON может быть заранее подготовлен для скачивания, «кеш»), а потом уже производить все манипуляции с данными на клиенте, отображать фильтры-формы и показывать на клиенте что нужно.


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