Я новичок в 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>



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Что насчет этого? (Пример)
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 в этом выражении
@MohammedRaeesNazeem, ты не готов, тебе это нужно stackoverflow.com/questions/6611824/why-do-we-need-to-use-ra dix
Большое спасибо. Теперь это действительно работает. Хотя на самом деле val должна быть ценностью.
Учитывая, что операторы if имеют много разных условий, которые не обязательно одинаковы (например, 1, 5 и 9 или 1, 7 и 10), трудно написать это очень коротко.