Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.06.2015, 17:23
Новичок на форуме
Отправить личное сообщение для studentPas Посмотреть профиль Найти все сообщения от studentPas
 
Регистрация: 17.06.2015
Сообщений: 7

Суммирование значений отдельных групп атрибутов 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>
Ответить с цитированием
  #2 (permalink)  
Старый 18.06.2015, 00:11
Новичок на форуме
Отправить личное сообщение для studentPas Посмотреть профиль Найти все сообщения от studentPas
 
Регистрация: 17.06.2015
Сообщений: 7

В общем первая проблема решилась... как-то
а вот сумма общего результата пока для меня загадка(
Есть у кого какие мысли?
Выложу полностью код для более наглядного описания проблемы

<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 ...
Ответить с цитированием
  #3 (permalink)  
Старый 18.06.2015, 00:43
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

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>
Ответить с цитированием
  #4 (permalink)  
Старый 18.06.2015, 08:30
Новичок на форуме
Отправить личное сообщение для studentPas Посмотреть профиль Найти все сообщения от studentPas
 
Регистрация: 17.06.2015
Сообщений: 7

Спасибо за совет, но немного не так (((
Задача состоит в написании "опросника", и выводе результатов. Есть несколько форм содержащие 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 в новую функцию и там их сложить и вывести результат
Заранее благодарен за любую помощь и совет!
Ответить с цитированием
  #5 (permalink)  
Старый 18.06.2015, 09:54
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

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>
Ответить с цитированием
  #6 (permalink)  
Старый 18.06.2015, 10:22
Новичок на форуме
Отправить личное сообщение для studentPas Посмотреть профиль Найти все сообщения от studentPas
 
Регистрация: 17.06.2015
Сообщений: 7

Спасибо огромное! и последний штрих - вывод этой суммы из sumAll по такому типу, как из sum и sum1
в html
<input type="text" name="sumOut" disabled="false" value="">
что в этом html надо прописать что б отобразить alert?
Ответить с цитированием
  #7 (permalink)  
Старый 18.06.2015, 10:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

studentPas,

function sumAll()
{
   return sums()  + sums1()
}


<input type="text" name="sumOut" disabled="false" onclick="this.value=sumAll()" value="">
Ответить с цитированием
  #8 (permalink)  
Старый 18.06.2015, 10:46
Новичок на форуме
Отправить личное сообщение для studentPas Посмотреть профиль Найти все сообщения от studentPas
 
Регистрация: 17.06.2015
Сообщений: 7

Добавляю Ваши поправки - считается только по первой форме(((

Убираю эту строку

<input type="text" name="sumOut" disabled="false" onclick="this.value=sumAll()" value="">

считает по двум формам - но естественно вывода суммы нет ((
а он необходим....
Если Вам не сложно просмотрите во втором сообщении я выложил работающий код, который считает по формам, но без вывода общей суммы,, может подскажите как и что в нём изменить/добавить, что б заработала sumAll() и вывод?
Ответить с цитированием
  #9 (permalink)  
Старый 18.06.2015, 11:14
Новичок на форуме
Отправить личное сообщение для studentPas Посмотреть профиль Найти все сообщения от studentPas
 
Регистрация: 17.06.2015
Сообщений: 7

Почти решил проблему
<input type="button" onclick="this.value=sumAll()" value="Подсчитать">
<input type="text" disabled="false" onclick="this.value=sumAll()" value="">
Выводит результат - только в кнопку, а не в текст %)
Ответить с цитированием
  #10 (permalink)  
Старый 18.06.2015, 15:03
Аспирант
Отправить личное сообщение для Endy Посмотреть профиль Найти все сообщения от Endy
 
Регистрация: 15.05.2015
Сообщений: 41

так?
<!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>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Суммирование значений по всем динамически добавленным полям Joliat Общие вопросы Javascript 2 12.02.2014 16:01
JS калькулятор value c нескольких групп radio Round Events/DOM/Window 7 30.10.2013 21:29
Получение значения из двух групп radio button kristalmen Элементы интерфейса 2 21.11.2011 23:13