| 
 Помогите вывести и посчитать значения ячеек в таблицах Вложений: 1 Весь код страницы во вложенном файле. в результате работы скрипта на страницу выводятся таблицы такого вида <div class="if_right"> <table class="if_ch"> <tbody> <tr> <td class="if_ch_name "> <span title="">Уровень жизни</span> </td> <td class="if_ch_val ">18.4</td> </tr></tbody></table> <table class="if_ch"> <tbody> <tr> <td class="if_ch_name "> <span title="">Эфф. доп. уровня жизни, %</span> </td> <td class="if_ch_val ">36.2</td> </tr> </tbody> </table> <div class="if_grp dbrown"> <div>Голова, руки, корпус, ноги:</div> </div> <table class="if_ch"> <tbody> <tr> <td class="if_ch_name "> <span title="">Прочность доп. брони</span> </td> <td class="if_ch_val ">1.5</td> </tr> </tbody> </table> <table class="if_ch"> <tbody> <tr> <td class="if_ch_name "> <span title="">Броня</span> </td> <td class="if_ch_val ">1.2</td> </tr> </tbody> </table><table class="if_ch"> <tbody> <tr> <td class="if_ch_name "> <span title="">Стойк. к дробящему урону</span> </td> <td class="if_ch_val ">1.2</td> </tr> </tbody> </table> </div> таких дивов несколько. не могу сообразить как посчитать одинаковые ячейки таблиц (тобишь есть два дива нужно сложить значение ячеек к примеру с Прочность доп. брони) посоветовали сделать: 
function getElementsByClassName(classname, node)  {
   if(!node) node = document.getElementsByTagName("body")[0];
   var a = [];
   var re = new RegExp('\\b' + classname + '\\b');
   var els = node.getElementsByTagName("*");
   for(var i=0,j=els.length; i<j; i++)
       if(re.test(els[i].className))a.push(els[i]);
   return a;
var elements = getElementsByClassName('if_ch_val');
var sum = 0;
for (var key in elements) {
sum += parseFloat(elements[key].innerHTML);
}
document.getElementById('result').innerHTML = sum;
но выдает 0.. 
function calculate() {
	var a = document.getElementsByClassName("if_ch_value").value;
	var b = document.getElementsByClassName("if_ch_value").value;
	var c = a+b;
	document.getElementById("summa").value = с;
}
рабочий код можно посмотреть тут | 
| 
 Цитата: 
 У табличек с данными всегда один класс - if_ch? | 
| 
 да, классы всегда одни | 
| 
 Цитата: 
 Тогда ходи по всем табличкам, проверяй имя класса... Если это она - используй коллекции rows у таблички и cells у строк, проверяй значение первой ячейки (это как тип стороки) и значение второй (это собственно данные). Переводи все из строки в число и суммируй нужное... | 
| 
 Спасибо, буду пробовать..  Но пока как то слабо себе это представляю:) | 
| 
 Цитата: 
 | 
| 
 нашел тут пример один решил по нему попробовать: 
function getText(n) {
var strings = [];
getStrings(n, strings);
return strings.join(" ");
function getStrings(n, strings) {
if (n.nodeType == 3 /* Node.TEXT_NODE */)
strings.push(n.data);
else if (n.nodeType == 1 /* Node.ELEMENT_NODE */) {
for(var m = n.firstChild; m != null; m = m.nextSibling) {
getStrings(m, strings);
}
}
}
}
//перебирает все table на странице, пример с таблицами в первом посте.
кнопкой 
<input value="Подсчет текста на странице" type="button" onClick="alert(getText(document.getElementsByTagName('table')[5]))">
получай из него в алерт результат в виде "Уровень жизни 18.4" Я так понимаю строку такого вида надо преобразовывать в строку только со значением вида "18,4"? а далее делать как то примерно так: 
function calculate(){
var a = getText(document.getElementsByTagName('table')[5]));
var b = getText(document.getElementsByTagName('table')[10]));
var c = a+b;
document.getElementById("summa") = c;
}
-только такая конструкция не работает :-? | 
| 
 uznik73, в твоём первоначальном примере "тип строки" и "цифра" были в разных ячейках... | 
| 
 uznik73, вот как выглядит путёвый тестовый пример... 
<!DOCTYPE html>
<html>
<head>
<title>test</title>
<style type="text/css">
</style>
<script type="text/javascript">
function Get() {
	var ot=document.getElementsByTagName('table')
	var i=0
	var val
	while (ot[i]) {
		if (ot[i].className!='if_ch') {
			i++
			continue
		}
		val=ot[i].rows[0].cells[1].innerHTML
		alert(val)
		i++
	}
}
</script>
</head>
<body>
<table>
	<tbody>
		<tr>
			<td>
				<span>Test</span>
			</td>
			<td>100</td>
		</tr>
	</tbody>
</table>
<table class="if_ch">
	<tbody>
		<tr>
			<td class="if_ch_name ">
				<span title="">Уровень жизни</span>
			</td>
				<td class="if_ch_val ">18.4</td>
		</tr>
	</tbody>
</table>
<button onclick='Get()'>Get</button>
</body>
</html>
 | 
| 
 Спасибо. но так он мне выдает все результаты без разбора то есть если у меня идет такой код 
<!DOCTYPE html>
<html>
<head>
<title>test</title>
<style type="text/css">
</style>
<script type="text/javascript">
function Get() {
	var ot=document.getElementsByTagName('table')
	var i=0
	var val
	while (ot[i]) {
		if (ot[i].className!='if_ch') {
			i++
			continue
		}
		val=ot[i].rows[0].cells[1].innerHTML
		alert(val)
		i++
	}
}
</script>
</head>
<body>
<table class="if_ch">
	<tbody>
		<tr>
			<td class="if_ch_name ">
				<span title="">Уровень жизни</span>
			</td>
				<td class="if_ch_val ">18.4</td>
		</tr>
	</tbody>
</table>
<table class="if_ch">
	<tbody>
		<tr>
			<td class="if_ch_name ">
				<span title="">Уровень жизни</span>
			</td>
				<td class="if_ch_val ">20.5</td>
		</tr>
	</tbody>
</table>
<table class="if_ch">
	<tbody>
		<tr>
			<td class="if_ch_name ">
				<span title="">Уровень маны</span>
			</td>
				<td class="if_ch_val ">8.4</td>
		</tr>
	</tbody>
</table>
<button onclick='Get()'>Get</button>
</body>
</html>
Нужно выбрать из трех таблиц только 2(или 3\4\5 если они есть) которые называются как "Уровень жизни" далее так же с "Уровень маны" и т.д а в исходном виде оно берет сразу все значения из-за того что у всех одинаковый класс "if_ch" а сделать разные классы для различных переменных возможности нет.. ps это если я правильно понял что alert(val[0]) выдаст 1, тоесть каждая цифра записана отдельно... | 
| Часовой пояс GMT +3, время: 22:49. |