Суммирование значений отдельных групп атрибутов value отмеченных radio
Доброго времени суток!
Имеется (наверняка известный код) по подсчёту всех отмеченных значений radio. Не удаётся с его помощью реализовать задачу из название темы: Требуется подсчёт суммы групп отмеченных radio (например, с 1 по 3-ю строку и с 4 по 5 отдельные суммы (умноженные на коэффициенты)), и потом общую (сумма1*0,3+сумма2*0,5) Пытался добавить новую функцию с изменённым id="**" - вообще не работает добавлял отдельную форму для добавленного скрипта с изменёнными id="**" тоже не работает общую сумму также не знаю как вывести... А надо срочно((( Буду благодарен за любую оказанную помощь! Код скрипта
function sums()
{
sum=0;
for(i=1;i<26;i++)
{
var elem=document.getElementById("r"+i);
if(elem.checked)sum=sum+parseInt(elem.value);
}
document.formText.sumOut.value=sum*0.3;
}
часть html кода <form name="formText"> <input type="radio" name="aa" id="r1" value="1"> <input type="radio" name="aa" id="r2" value="2"> <input type="radio" name="aa" id="r3" value="3"> <input type="radio" name="aa" id="r4" value="4"> <input type="radio" name="aa" id="r5" value="5"><BR><BR> <input type="radio" name="cc" id="r6" value="1"> <input type="radio" name="cc" id="r7" value="2"> <input type="radio" name="cc" id="r8" value="3"> <input type="radio" name="cc" id="r9" value="4"> <input type="radio" name="cc" id="r10" value="5"><BR><BR> <INPUT type="reset" value="Reset"> <br>Result:<br> <input type="text" name="sumOut" disabled="false" value=""> </form> |
В общем первая проблема решилась... как-то :)
а вот сумма общего результата пока для меня загадка( Есть у кого какие мысли? Выложу полностью код для более наглядного описания проблемы
<html>
<head>
<script>
<!--
function sums()
{
sum=0;
for(i=1;i<11;i++)
{
var elem=document.getElementById("r"+i);
if(elem.checked)sum=sum+parseInt(elem.value);
}
document.formText.sumOut.value=sum*0.3;
var k = sum*0.3;
document.whrite(k);
}
</script>
<script>
function sums1()
{
sum1=0;
for(i=1; i<11; i++)
{
var elem=document.getElementById("g"+i);
if(elem.checked)sum1=sum1+parseInt(elem.value);
}
document.formText_1.sumOut.value=sum1*0.5;
var l = sum1*0.5;
document.whrite(l);
}
//-->
</script>
<script>
function all()
{
var all = 0;
all = k+l;
document.formText_all.sumOut.value=all;
}
</script>
</head>
<body>
<form name="formText">
<input type="radio" name="aa" id="r1" value="1">text 1
<input type="radio" name="aa" id="r2" value="2">text 2
<input type="radio" name="aa" id="r3" value="3">text 3
<input type="radio" name="aa" id="r4" value="4">text 4
<input type="radio" name="aa" id="r5" value="5">text 5<BR><BR>
<input type="radio" name="cc" id="r6" value="1">text 1
<input type="radio" name="cc" id="r7" value="2">text 2
<input type="radio" name="cc" id="r8" value="3">text 3
<input type="radio" name="cc" id="r9" value="4">text 4
<input type="radio" name="cc" id="r10" value="5">text 5<BR><BR>
<input type="button" onclick="sums()" value="Подсчитать">
<INPUT type="reset" value="Отменить">
<br>Сумма:<br>
<input type="text" name="sumOut" disabled="false" value="">
</form>
<form name="formText_1">
<input type="radio" name="dd" id="g1" value="1">text 1
<input type="radio" name="dd" id="g2" value="2">text 2
<input type="radio" name="dd" id="g3" value="3">text 3
<input type="radio" name="dd" id="g4" value="4">text 4
<input type="radio" name="dd" id="g5" value="5">text 5<BR><BR>
<input type="radio" name="bb" id="g6" value="1">text 1
<input type="radio" name="bb" id="g7" value="2">text 2
<input type="radio" name="bb" id="g8" value="3">text 3
<input type="radio" name="bb" id="g9" value="4">text 4
<input type="radio" name="bb" id="g10" value="5">text 5<BR><BR>
<input type="button" onclick="sums1()" value="Подсчитать">
<INPUT type="reset" value="Отменить">
<br>Сумма:<br>
<input type="text" name="sumOut" disabled="false" value="">
</form>
<form name="formText_all">
<input type="button" onclick="all" value="Подсчитать">
<br>ALL<br>
<input type="text" name="sumOut" disabled="false" value="">
</form>
</body>
</html>
Нужно в отдельной форме получить результат sum и sum1 ... |
studentPas,
так много букв, но так и непонятно ... возможно вы это хотели ?
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<script>
function sums(obj) {
var sum = 0,
i, inp = obj.querySelectorAll(':checked');
for (i = 0; i < inp.length; i++) {
var elem = inp[i];
sum += elem.value * (elem.name == "aa" ? .3 : .5);
}
obj.sumOut.value = sum.toFixed(1);
}
</script>
</head>
<body>
<form name="formText" onchange="sums(this)">
<input type="radio" name="aa" id="r1" value="1">
<input type="radio" name="aa" id="r2" value="2">
<input type="radio" name="aa" id="r3" value="3">
<input type="radio" name="aa" id="r4" value="4">
<input type="radio" name="aa" id="r5" value="5"><BR><BR>
<input type="radio" name="cc" id="r6" value="1">
<input type="radio" name="cc" id="r7" value="2">
<input type="radio" name="cc" id="r8" value="3">
<input type="radio" name="cc" id="r9" value="4">
<input type="radio" name="cc" id="r10" value="5"><BR><BR>
<INPUT type="reset" value="Reset">
<br>Result:<br>
<input type="text" name="sumOut" disabled="false" value="">
</form>
</body>
</html>
|
Спасибо за совет, но немного не так (((
Задача состоит в написании "опросника", и выводе результатов. Есть несколько форм содержащие radio при их клике суммируются их значения и умножаются на коэффициент, точно так же делается с радио из следующей формы, а потом умноженные суммы складываются . Повторюсь, часть проблемы я решил (нахождение сумм и умножение из разных форм):
<script>
<!--
function sums()
{
sum=0;
for(i=1;i<11;i++)
{
var elem=document.getElementById("r"+i);
if(elem.checked)sum=sum+parseInt(elem.value);
}
document.formText.sumOut.value=sum*0.3;
var k = sum*0.3;
document.whrite(k);
}
</script>
<script>
function sums1()
{
sum1=0;
for(i=1; i<11; i++)
{
var elem=document.getElementById("g"+i);
if(elem.checked)sum1=sum1+parseInt(elem.value);
}
document.formText_1.sumOut.value=sum1*0.5;
var l = sum1*0.5;
document.whrite(l);
}
//-->
</script>
<script>
теперь осталось найти и вывести, например all = sum + sum1, то есть передать значения sum и sum1 в новую функцию и там их сложить и вывести результат Заранее благодарен за любую помощь и совет! |
studentPas,
<script>
function sums()
{
sum=0;
for(i=1;i<11;i++)
{
var elem=document.getElementById("r"+i);
if(elem.checked)sum=sum+parseInt(elem.value);
}
document.formText.sumOut.value=sum*0.3;
var k = sum*0.3;
return k;
}
function sums1()
{
sum1=0;
for(i=1; i<11; i++)
{
var elem=document.getElementById("g"+i);
if(elem.checked)sum1=sum1+parseInt(elem.value);
}
document.formText_1.sumOut.value=sum1*0.5;
var l = sum1*0.5;
return l;
}
function sumAll()
{
alert(sums() + sums1())
}
</script>
|
Спасибо огромное! и последний штрих - вывод этой суммы из sumAll по такому типу, как из sum и sum1
в html <input type="text" name="sumOut" disabled="false" value=""> что в этом html надо прописать что б отобразить alert? |
studentPas,
:blink:
function sumAll()
{
return sums() + sums1()
}
<input type="text" name="sumOut" disabled="false" onclick="this.value=sumAll()" value=""> |
Добавляю Ваши поправки - считается только по первой форме(((
Убираю эту строку <input type="text" name="sumOut" disabled="false" onclick="this.value=sumAll()" value=""> считает по двум формам - но естественно вывода суммы нет (( а он необходим.... Если Вам не сложно просмотрите во втором сообщении я выложил работающий код, который считает по формам, но без вывода общей суммы,, может подскажите как и что в нём изменить/добавить, что б заработала sumAll() и вывод? |
Почти решил проблему
<input type="button" onclick="this.value=sumAll()" value="Подсчитать"> <input type="text" disabled="false" onclick="this.value=sumAll()" value=""> Выводит результат - только в кнопку, а не в текст %) |
так?
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="https://cdn.rawgit.com/finom/balalaika/master/balalaika.min.js"></script>
<script src="https://cdn.rawgit.com/brettz9/4212262/raw/00d5abe3730b05487eace455fbd59eb82a1f243f/Array.from.js"></script>
<script>
$(function(){
var tmp = {};
function sums(obj,i){
var checked = Array.from($(":checked", obj)).map(function(e){return +e.value}),sum = checked.length?checked.reduce(function(s,current){return s+current;}):0;
tmp[obj.getAttribute('name')] = sum;
obj.sumOut.value = sum.toFixed(1);
console.log(tmp);
};
function calcAll(obj){
var s = 0;
for (var k in obj) {
s += obj[k];
}
sumOutAll.value = s.toFixed(1);
return s;
};
$('.formTxt').forEach(function(e){
var inp = $('.calc',e);
inp.on('click',function(){
sums(e);
});
});
$('.calcAll').on('click',function(){
console.log(calcAll(tmp));
});
});
</script>
</head>
<body>
<form name="formText" class="formTxt">
<input type="radio" name="aa" id="r1" value="1">text 1
<input type="radio" name="aa" id="r2" value="2">text 2
<input type="radio" name="aa" id="r3" value="3">text 3
<input type="radio" name="aa" id="r4" value="4">text 4
<input type="radio" name="aa" id="r5" value="5">text 5<BR><BR>
<input type="radio" name="cc" id="r6" value="1">text 1
<input type="radio" name="cc" id="r7" value="2">text 2
<input type="radio" name="cc" id="r8" value="3">text 3
<input type="radio" name="cc" id="r9" value="4">text 4
<input type="radio" name="cc" id="r10" value="5">text 5<BR><BR>
<input type="button" class="calc" value="Подсчитать">
<INPUT type="reset" value="Отменить">
<br>Сумма:<br>
<input type="text" name="sumOut" disabled="false" value="">
</form>
<form name="formText_1" class="formTxt">
<input type="radio" name="dd" id="g1" value="1">text 1
<input type="radio" name="dd" id="g2" value="2">text 2
<input type="radio" name="dd" id="g3" value="3">text 3
<input type="radio" name="dd" id="g4" value="4">text 4
<input type="radio" name="dd" id="g5" value="5">text 5<BR><BR>
<input type="radio" name="bb" id="g6" value="1">text 1
<input type="radio" name="bb" id="g7" value="2">text 2
<input type="radio" name="bb" id="g8" value="3">text 3
<input type="radio" name="bb" id="g9" value="4">text 4
<input type="radio" name="bb" id="g10" value="5">text 5<BR><BR>
<input type="button" class="calc" value="Подсчитать">
<INPUT type="reset" value="Отменить">
<br>Сумма:<br>
<input type="text" name="sumOut" disabled="false" value="">
</form>
<form name="formText_all">
<input type="button" class="calcAll" value="Подсчитать">
<br>ALL<br>
<input type="text" name="sumOut" disabled="false" value="" id="sumOutAll">
</body>
</html>
|
| Часовой пояс GMT +3, время: 12:13. |