Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Туплю. Сумма элементов. (https://javascript.ru/forum/dom-window/12640-tuplyu-summa-ehlementov.html)

lolka84 27.10.2010 11:13

Туплю. Сумма элементов.
 
Добрый день.
Имеем:
function summitog1() { 
  var table = document.getElementById("one");
  var summyeval = document.getElementById("summitogye1");
  var summrurval = document.getElementById("summitogrur1");  
    for (var i=1;i<table.rows.length-2;i++) {
      var td = table.rows[i];
	    for (var q=0;q<td.cells.length;q++) {
		  var o1 = td.cells[3];
		  var o2 = td.cells[4];
		  o1 = o1.getElementsByTagName('input')[0];
		  o2 = o2.getElementsByTagName('input')[0];
		}
	}
  summyeval.value = <сумма всех o1> ???
  summrurval.value = <сумма всех o2> ???
}

Как найти суммы o1 и o2 ? Это числа. Оператор "+=" каждый раз тупо добавляет следущее значение в конец предыдущего, правильно понимаю, что значение воспринимается как текстовая строка ? Как тогда указать оператору, что значения - числа, что б он их суммировал ?

Kolyaj 27.10.2010 11:19

Number()

micscr 27.10.2010 11:26

Ну и я добавлю классическое:
sum += parseInt(value, 10);

exec 27.10.2010 11:34

Можно так ещё:

+a + +b;

lolka84 27.10.2010 12:37

Спасибо.
Пытаюсь сделать проверку, что б скрипт складывал только тогда, когда значение не пустое, пока получается какаято ерунда:
function summitog1() { 
  var table = document.getElementById("one");
  var summyeval = document.getElementById("summitogye1");
  var summrurval = document.getElementById("summitogrur1");  
    for (var i=1;i<table.rows.length-2;i++) {
      var td = table.rows[i];
	    for (var q=0;q<td.cells.length;q++) {
		  var o1 = td.cells[4];
		  var o2 = td.cells[5];
		  o1 = o1.getElementsByTagName('input')[0];
		  o2 = o2.getElementsByTagName('input')[0];
		}
      var sumye = Number(o1.value);
	  var sumrur = Number(o2.value);
		if (o1.value != "") {
		  sumye += sumye;
		}
		if (o2.value != "") {
		  sumrur += sumrur;
		}
	}
	if ((sumye != "") && (sumrur != "")) {
      summyeval.value = (sumye).toFixed(2);
      summrurval.value = (sumrur).toFixed(2);
	}
}

Что не так ?

рони 27.10.2010 13:27

lolka84,
посмотрите тут
и возможный вариант
function summitog1() {
  var table = document.getElementById("one"),
  summyeval = document.getElementById("summitogye1"),
  summrurval = document.getElementById("summitogrur1"),
  sumye=0,sumrur=0;
    for (var i=1;i<table.rows.length-2;i++) {
      var td = table.rows[i],o1 = td.cells[4],o2 = td.cells[5];
          o1 = o1.getElementsByTagName('input')[0];
		  o2 = o2.getElementsByTagName('input')[0];
      if(!isNaN(Number(o1.value)))sumye +=Number(o1.value);
      if(!isNaN(Number(o2.value)))sumrur +=Number(o2.value);
      	}
	if (sumye && sumrur ){
      summyeval.value = (sumye).toFixed(2);
      summrurval.value = (sumrur).toFixed(2);
	}
}

Kolyaj 27.10.2010 13:32

Цитата:

Сообщение от lolka84
if ((sumye != "") && (sumrur != "")) {

А зачем вы числа со строками сравниваете?

lolka84 27.10.2010 13:52

рони, спасибо)
Kolyaj, так ума нет :)


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