Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Переделка кода (https://javascript.ru/forum/dom-window/57221-peredelka-koda.html)

Ramzes94 25.07.2015 08:47

Переделка кода
 
Привет всем.
Подскажите пожалуйста как переделать код чтобы.
При первом помеченном чебоксе сумма не прибавлялась при пометке второго и последуйщего сумма начала прибавляться.

Вот собственно код:

<form name="Sum">
  <input type="checkbox" value="1"/>
  <input type="checkbox" value="2"/>
  <input type="checkbox"/>
  <input type="checkbox" value=""/>
  <input type="checkbox" value="3"/>
  <input type="checkbox" value="4"/>
  <input type="checkbox" value="5"/>
  <output id="rezultat">Сумма: 0</output>
</form>


var s = document.forms.Sum,
    d = s.querySelectorAll('input[type="checkbox"]:not([value]), input[type="checkbox"][value=""]');
  for (var i = 0; i < d.length; i++) // чтобы не было написано NaN, убираем в disabled пункты, где не прописаны значения
    d[i].disabled = true;
s.onchange = function() { // начало работы функции сложения
  var n = s.querySelectorAll('[type="checkbox"]'),
      itog = 0;
  for(var j=0; j<n.length; j++)
    n[j].checked ? itog += parseFloat(n[j].value) : itog;
    document.getElementById('rezultat').innerHTML = 'Сумма: ' + itog;
}

рони 25.07.2015 10:34

Ramzes94,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>
 <form name="Sum">
  <input type="checkbox" value="1"/>
  <input type="checkbox" value="2"/>
  <input type="checkbox"/>
  <input type="checkbox" value=""/>
  <input type="checkbox" value="3"/>
  <input type="checkbox" value="4"/>
  <input type="checkbox" value="5"/>
  <output id="rezultat">Сумма: 0</output>
</form>
<script>
var s = document.forms.Sum;
s.onchange = function() { // начало работы функции сложения
  var n = s.querySelectorAll(':checked'),
      itog = 0;
  for(var j=0; j<n.length; j++)
    itog += +n[j].value||0;
    document.getElementById('rezultat').innerHTML = 'Сумма: ' + itog;
}
</script>
</body>

</html>

Ramzes94 25.07.2015 11:19

Рони привет дружище)))
 
Подскажи пожалуйста можно сделать так чтобы javascript автоматом определял что: если выбран один чебокс, любой не важно какой, то сумма не увеличатся.
При выборе двух чебоксов считается сумма которая указанна в втором чебоксек.

рони 25.07.2015 14:00

Цитата:

Сообщение от Ramzes94
При выборе двух чебоксов считается сумма которая указанна в втором чебоксек.

запоминать первый выбранный checkbox и не учитывать его при суммировании

рони 25.07.2015 14:09

Ramzes94,
задача про the horse in vacuum ?
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>
 <form name="Sum">
  <input type="checkbox" value="1"/>
  <input type="checkbox" value="2"/>
  <input type="checkbox"/>
  <input type="checkbox" value=""/>
  <input type="checkbox" value="3"/>
  <input type="checkbox" value="4"/>
  <input type="checkbox" value="5"/>
  <output id="rezultat">Сумма: 0</output>
</form>
<script>
var s = document.forms.Sum, temp;
s.onchange = function() { // начало работы функции сложения
  var n = s.querySelectorAll(':checked'),
      itog = 0;
     if(n.length == 1) {temp = n[0]};
     if(!n.length) {temp = null};
  for(var j=0; j<n.length; j++)
    if(n[j] != temp) itog += +n[j].value||0;
    document.getElementById('rezultat').innerHTML = 'Сумма: ' + itog;
}
</script>
</body>

</html>

Ramzes94 26.07.2015 17:40

Отлично от души
 
Спасибо дружище то что надо)


Часовой пояс GMT +3, время: 15:15.