Как я могу сократить этот код JavaScript?

Я новичок в JavaScript. Мне нужна функция, которая добавляет значение всех трех групп переключателей, выбранных, как показано на прикрепленном изображении. См. Изображение ниже. Я пробовал код, показанный ниже.

Так выглядят варианты выбора

      function nodisplay(){

        // getting the values of all radio buttons using id

        var opt1 = document.getElementById("option1");
        var opt2 = document.getElementById("option2");              
        var opt3 = document.getElementById("option3");              
        var opt4 = document.getElementById("option4");              
        var opt5 = document.getElementById("option5");              
        var opt6 = document.getElementById("option6");              
        var opt7 = document.getElementById("option7");
        var opt8 = document.getElementById("option8");
        var opt9 = document.getElementById("option9");
        var opt10 = document.getElementById("option10");
        var drap = document.getElementById("totally");

// добавляем все параметры, которые выбраны в данный момент, и вывод помещается в другой div

        if (opt1.checked){
          drap.innerHTML = parseInt(opt1.value);

        } if (opt1.checked && opt3.checked){
          drap.innerHTML = parseInt(opt1.value) + parseInt(opt2.value);

        }if (opt1.checked && opt3.checked && opt8.checked){
            drap.innerHTML = parseInt(opt1.value) + parseInt(opt3.value) + parseInt(opt8.value); 

         }if (opt1.checked && opt4.checked && opt8.checked){
            drap.innerHTML = parseInt(opt1.value) + parseInt(opt4.value) + parseInt(opt8.value);

         } if (opt1.checked && opt5.checked && opt8.checked){
            drap.innerHTML = parseInt(opt1.value) + parseInt(opt5.value) + parseInt(opt8.value);

         } if (opt1.checked && opt6.checked && opt8.checked){
            drap.innerHTML = parseInt(opt1.value) + parseInt(opt6.value) + parseInt(opt8.value);

         } if (opt1.checked && opt7.checked && opt8.checked){
            drap.innerHTML = parseInt(opt1.value) + parseInt(opt7.value) + parseInt(opt8.value);

         } if (opt1.checked && opt3.checked && opt9.checked){
            drap.innerHTML = parseInt(opt1.value) + parseInt(opt3.value) + parseInt(opt9.value); 

         } if (opt1.checked && opt4.checked && opt9.checked){
            drap.innerHTML = parseInt(opt1.value) + parseInt(opt4.value) + parseInt(opt9.value);

         } if (opt1.checked && opt5.checked && opt9.checked){
            drap.innerHTML = parseInt(opt1.value) + parseInt(opt5.value) + parseInt(opt9.value);

         } if (opt1.checked && opt6.checked && opt9.checked){
            drap.innerHTML = parseInt(opt1.value) + parseInt(opt6.value) + parseInt(opt9.value);

         } if (opt1.checked && opt7.checked && opt9.checked){
            drap.innerHTML = parseInt(opt1.value) + parseInt(opt7.value) + parseInt(opt9.value);

         } if (opt1.checked && opt3.checked && opt10.checked){
            drap.innerHTML = parseInt(opt1.value) + parseInt(opt3.value) + parseInt(opt10.value); 

         } if (opt1.checked && opt4.checked && opt10.checked){
            drap.innerHTML = parseInt(opt1.value) + parseInt(opt4.value) + parseInt(opt10.value);

         } if (opt1.checked && opt5.checked && opt10.checked){
            drap.innerHTML = parseInt(opt1.value) + parseInt(opt5.value) + parseInt(opt10.value);

         } if (opt1.checked && opt6.checked && opt10.checked){
            drap.innerHTML = parseInt(opt1.value) + parseInt(opt6.value) + parseInt(opt10.value);

         } if (opt1.checked && opt7.checked && opt10.checked){
            drap.innerHTML = parseInt(opt1.value) + parseInt(opt7.value) + parseInt(opt10.value);

         }

      }

    </script>

Я думаю, что сохранение всех выбранных значений переключателей в массиве с последующим добавлением последующих элементов массива на основе выбора будет работать, но я не знаю, как это выполнить. Вот и HTML-код

 <div class = "radio">
  <input type = "radio" id = "option1" name = "optradio" onchange = "nodisplay()" value = "3000">   <label> Gallery Wrap </label>   </div>


 <div class = "radio">   <input type = "radio" id = "option3" value = "700" name = "optradio2" onclick = "nodisplay()"> <label>20x16 </label>  </div>

<div class = "radio">  <input type = "radio" id = "option4" value = "900" name = "optradio2" onclick = "nodisplay()"> <label>24x19   </label>   </div>

<div class = "radio">   <input type = "radio" id = "option5" value = "1150" name = "optradio2" onclick = "nodisplay()"> <label>30x24 </label> </div>

 <div class = "radio">   <input type = "radio" id = "option6" value = "2340" name = "optradio2" onclick = "nodisplay()"> <label>36x29 </label>  </div>

Учитывая, что операторы if имеют много разных условий, которые не обязательно одинаковы (например, 1, 5 и 9 или 1, 7 и 10), трудно написать это очень коротко.

Lesleyvdp 27.08.2018 15:24
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
40
1

Ответы 1

Что насчет этого? (Пример)

function nodisplay() {
    var el1 = document.querySelector('input[name = "optradio1"]:checked');
    var el2 = document.querySelector('input[name = "optradio2"]:checked');
    var el3 = document.querySelector('input[name = "optradio3"]:checked');
    var r1 = el1 ? parseInt(el1.val) : 0;
    var r2 = el2 ? parseInt(el2.val) : 0;
    var r3 = el3 ? parseInt(el3.val) : 0;
    document.getElementById('totally').innerHTML = r1 + r2 + r3;
}

@ l2aelba Большое спасибо. Он суммирует все значения. Мне нужно показать общую сумму, даже если выбрано только r1, r2 или r3 или в любой комбинации. Один выбор в строке, как показано на рисунке. Также не могли бы вы рассказать мне, что означает 10 в этом выражении

Mohammed Raees Nazeem 27.08.2018 15:43

@MohammedRaeesNazeem, ты не готов, тебе это нужно stackoverflow.com/questions/6611824/why-do-we-need-to-use-ra‌ dix

l2aelba 27.08.2018 15:44

Большое спасибо. Теперь это действительно работает. Хотя на самом деле val должна быть ценностью.

Mohammed Raees Nazeem 27.08.2018 16:10

Другие вопросы по теме