Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Общий подсчёт из нескольких полей (https://javascript.ru/forum/dom-window/37277-obshhijj-podschjot-iz-neskolkikh-polejj.html)

SkyLight 14.04.2013 22:23

Где код?

alshinkareff 14.04.2013 22:26

Код:


$(document).ready(function() {
       
        //Таблица1
        $("#tableSelect").change(function() {
                var totalSum = 0;
                var sum;
               
                $("input[id^='pos'], select[id^='pos']").each(function() {
                        var idElement = "#"+$(this).attr("id"), //Получаем id элемента
                                priceField = parseInt($(idElement+"_price").text()), //Стоимость позиции
                                countField = parseInt($(this).val()); //значение элемента
                       
                        $(idElement+"_count").text(priceField * countField); //Выводим сумму по позиции
                        totalSum += priceField * countField;
                });
                $("#count_price span").text(totalSum);
                sum = totalSum1 + totalSum2 + totalSum3 + totalSum4;
        });
       
       
        //Таблица2
        $("#tableSelect2").change(function() {
                var totalSum = 0;
                var sum;
               
                $("input[id^='pos2'], select[id^='pos2']").each(function() {
                        var idElement = "#"+$(this).attr("id"),
                                priceField = parseInt($(idElement+"_price").text()),
                                countField = parseInt($(this).val());
                       
                        $(idElement+"_count").text(priceField * countField);
                        totalSum += priceField * countField;
                });
                $("#count_price2 span").text(totalSum);
                sum = totalSum1 + totalSum2 + totalSum3 + totalSum4;
        });

               
        //Таблица3
        $("#tableSelect3").change(function() {
                var totalSum = 0;
                var sum;
               
                $("input[id^='pos3'], select[id^='pos3']").each(function() {
                        var idElement = "#"+$(this).attr("id"),
                                priceField = parseInt($(idElement+"_price").text()),
                                countField = parseInt($(this).val());
                       
                        $(idElement+"_count").text(priceField * countField);
                        totalSum += priceField * countField;
                });
                $("#count_price3 span").text(totalSum);
                sum = totalSum1 + totalSum2 + totalSum3 + totalSum4;
        });
       
       
        //Таблица4
        $("#tableSelect4").change(function() {
                var totalSum = 0;
                var sum;
               
                $("input[id^='pos4'], select[id^='pos4']").each(function() {
                        var idElement = "#"+$(this).attr("id"),
                                priceField = parseInt($(idElement+"_price").text()),
                                countField = parseInt($(this).val());
                       
                        $(idElement+"_count").text(priceField * countField);
                        totalSum += priceField * countField;
                });
                $("#count_price4 span").text(totalSum);
                sum = totalSum1 + totalSum2 + totalSum3 + totalSum4;
        });
       
        var sum = 0;
        var totalSum1 = parseInt($(#"count_price span").text());
        var totalSum2 = parseInt($(#"count_price2 span").text());
        var totalSum3 = parseInt($(#"count_price3 span").text());
        var totalSum4 = parseInt($(#"count_price4 span").text());

        sum = totalSum1 + totalSum2 + totalSum3 + totalSum4;
       
        $("#sum span").text(sum);
       
});

Ну и к HTML добавлен <div id="sum">ОБЩЕЕ ИТОГО<span></span></div>

SkyLight 14.04.2013 22:40

Цитата:

Сообщение от alshinkareff
var sum = 0;
var totalSum1 = parseInt($(#"count_price span").text());
var totalSum2 = parseInt($(#"count_price2 span").text());
var totalSum3 = parseInt($(#"count_price3 span").text());
var totalSum4 = parseInt($(#"count_price4 span").text());

sum = totalSum1 + totalSum2 + totalSum3 + totalSum4;

$("#sum span").text(sum);

В вашем случае вот этот блок должен вызываться при пересчете. Одного только
sum = totalSum1 + totalSum2 + totalSum3 + totalSum4;
недостаточно.

alshinkareff 14.04.2013 22:42

SkyLight,
Что я должен сделать - не понятно. Уж такой я нуб в JS.

bret 15.04.2013 01:21

Значения группы переменных totalSum1..totalSum4 обновляйте

alshinkareff 15.04.2013 02:58

Как это сделать? Люди. Я спрашиваю: "как сделать?", получаю в ответ "тебе надо сделать это...", я понял что мне много чего надо сделать, но я спрашиваю как? Спасибо за Ваши отклики, всё же, надеюсь на понимание.

SkyLight 15.04.2013 19:46

Я бы посоветовал начать пользоваться консолью - хорошая штука для отлова ошибок. А что вам нужно сделать я уже сказал: выполнять в конце каждого обработчика вместо
sum = totalSum1 + totalSum2 + totalSum3 + totalSum4;

это:
var sum = 0;
var totalSum1 = parseInt($(#"count_price span").text());
var totalSum2 = parseInt($(#"count_price2 span").text());
var totalSum3 = parseInt($(#"count_price3 span").text());
var totalSum4 = parseInt($(#"count_price4 span").text());

sum = totalSum1 + totalSum2 + totalSum3 + totalSum4;

$("#sum span").text(sum);

Только предварительно исправьте в этом куске ошибки - вы же решетку за кавычки вынесли зачем-то.

Кстати, общий вопрос: а раз вы толком не знаете JS, то зачем взялись за такую задачу? Да еще и с jQuery. Не с этого начинать надо... У вас же в итоге только каша получится. С простого надо было начать.


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