Показать сообщение отдельно
  #3 (permalink)  
Старый 10.04.2025, 23:58
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,831

<div class="Sum">
  <div class="checkbox_item">
    <label>Опция 1 <input type="checkbox" class="dopopt" value="500" checked/></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>

<script>
  (() => {
    const checkboxes = [].slice.call(
      document.querySelectorAll('.Sum .checkbox_item input[type="checkbox"]')
    );
    const resultContainer = document.querySelector('#fullsum');

    if (!resultContainer) {
        return;
    }

    checkboxes.forEach(node => {
        const initialValue = +resultContainer.textContent.replace(/\D+/gim, '');
        
        node.addEventListener('change', () => {
            const sum = checkboxes.reduce((res, node) => {
                return res + (node.checked ? +node.value : 0);
            }, initialValue);

            resultContainer.textContent = sum.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ' ');
        });
    });

    checkboxes.at(-1)?.dispatchEvent(new Event('change'));
  })();
</script>

Последний раз редактировалось Nexus, 11.04.2025 в 00:00.
Ответить с цитированием