Показать сообщение отдельно
  #2 (permalink)  
Старый 10.04.2025, 23:02
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,149

сумма выбранных опций
samdo,

<!DOCTYPE HTML>
<html>
<head>
    <title>Untitled</title>
    <script>
        document.addEventListener('DOMContentLoaded', function() {
            let fullsums = document.querySelectorAll('.rezult');
            function StrToNum(str) {
                return Number(str.replace(/\D/g, ""))
            }
            function numSplit(el, num) {
                el.textContent = num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ' ');
            }
            document.querySelectorAll('.Sum').forEach(
                (sum, i) => {
                    let rezult = fullsums[i];
                    let num = StrToNum(rezult.textContent);
                    sum.querySelectorAll('[checked].dopopt').forEach(({
                        value
                    }) => num += +value);
                    numSplit(rezult, num)
                    sum.addEventListener('change', function(event) {
                            let input = event.target.closest('.dopopt');
                            if (input) {
                                let dop = -input.value;
                                if (input.checked) dop = +input.value;
                                num += dop;
                                numSplit(rezult, num);
                            }
                        }
                    )
                })
        })
    </script>
</head>
<body>
    <div class="Sum">
        <div class="checkbox_item">
            <label>Опция 1 <input type="checkbox" class="dopopt" value="500" ></label>
        </div>
        <div class="checkbox_item">
            <label>Опция 2<input type="checkbox" class="dopopt" value="100200"></label>
        </div>
    </div>
    <span id="fullsum" class="rezult">100 500</span>
    <div class="Sum">
        <div class="checkbox_item">
            <label>Опция 1 <input type="checkbox" class="dopopt" value="500" checked="checked" ></label>
        </div>
        <div class="checkbox_item">
            <label>Опция 2<input type="checkbox" class="dopopt" value="100" checked="checked" ></label>
        </div>
    </div>
    <span id="fullsum" class="rezult">500</span>
</body>
</html>
Ответить с цитированием