2011-02-03 3 views
1

моего HTML-код выглядит следующим образомJavascript для добавления значений таблицы

<TR Row="1" CLASS="ThemeAlignCenter"> 
       <TD id="wrdActive_Row1" style="width: 50px" 
        CLASS="rdThemeDataTableCell"><SPAN id="lblactive_Row1">6</SPAN></TD> 

... more rows 

Я хочу поставить JavaScript в конце страницы, чтобы добавить все значения lblactive_row1 когда-либо оказывается в страница (в данном примере номер 6)

Edit: более источник

<TABLE style="" border="0" CLASS="rdThemeDataTable" id="dtWardData" 
       cellspacing="0"> 
       <COL id="wrdActive"></COL> 
       <COL id="wrdOccupied"></COL> 
       <TR Row="1" CLASS="ThemeAlignCenter"> 
        <TD id="wrdActive_Row1" style="width: 50px" 
         CLASS="rdThemeDataTableCell"><SPAN id="lblactive_Row1">4</SPAN></TD> 
        <TD id="wrdOccupied_Row1" style="width: 50px" 
         CLASS="rdThemeDataTableCell"><SPAN id="lblOccupied_Row1">4</SPAN></TD> 
       </TR> 
      </TABLE> 

    <TABLE style="" border="0" CLASS="rdThemeDataTable" id="dtWardData" 
       cellspacing="0"> 
       <COL id="wrdActive"></COL> 
       <COL id="wrdOccupied"></COL> 

        <TD id="wrdActive_Row1" style="width: 50px" 
         CLASS="rdThemeDataTableCell"><SPAN id="lblactive_Row1">6</SPAN></TD> 
        <TD id="wrdOccupied_Row1" style="width: 50px" 
         CLASS="rdThemeDataTableCell"><SPAN id="lblOccupied_Row1">2</SPAN></TD> 

       </TR> 
      </TABLE> 

    Repeat... 

это продолжается так еще на 10 или около того столов, все тот же источник. редактирование html не может быть и речи, потому что оно генерируется сторонним инструментом. все, что я могу добавить небольшой скрипт в конце

+0

где ввести значения? –

+0

У других SPAN есть такие идентификаторы, как 'lblactive_Row2', 'lblactive_Row3'? – Martijn

+0

@martjin. Нет, все они называются lblactive_row1 – code511788465541441

ответ

3

В зависимости от того, используете ли вы jQuery или нет, вам, возможно, придется изменить свой HTML, чтобы было легче выбрать нужные элементы.

С JQuery вы должны быть в состоянии сделать что-то вроде этого:

var total = 0; 
$('table tr.ThemeAlignCenter > td.rdThemeDataTableCell > span').each(function(i) { 
    total += parseInt($(this).text()); 
}); 

Без JQuery, предполагая, что ваш < таблицу > имеет идентификатор данных, то вдоль этих линий должно помочь:

var tbl = document.getElementById('data'); 
var cells = tbl.getElementsByTagName('td'); 

var total = 0; 
for (var i = 0, limit = cells.length; i < limit; i++) { 
    var td = cells[i]; 
    if (td.className === 'rdThemeDataTableCell') { 
     var elem = td.getElementsByTagName('span')[0]; 
     total += parseInt(elem.innerHTML); 
    } 
} 

EDIT: отредактирован код, чтобы он мог применяться к каждой таблице (мы надеемся, будем работать, если атрибуты идентификатора таблицы не могут быть изменены и должны оставаться идентичными):

function sumTable(tbl) { 
    var cells = tbl.getElementsByTagName('td'); 

    var total = 0; 
    for (var i = 0, limit = cells.length; i < limit; i++) { 
     var td = cells[i]; 
     if (td.className === 'rdThemeDataTableCell') { 
      var elem = td.getElementsByTagName('span')[0]; 
      total += parseInt(elem.innerHTML); 
     } 
    } 

    return total; 
} 

var tables = document.getElementsByTagName('table'); 
var results = []; 
for (var i = 0, limit = tables.length; i < limit; i++) { 
    var total = sumTable(tables[i]); 
    results.push(total); 
} 
+0

Импробовать это, но он не работает. я даже не получить exmpty оповещения \t <тип скрипта = "текст/JavaScript"> \t \t вар TBL = document.getElementById ('dtWardData'); \t var cells = tbl.getElementsByTagName ('wrdActive_Row1'); \t var total = 0; \t для (var i = 0; i <10; i ++) { var td = cells [i]; if (td.className == 'rdThemeDataTableCell') { var elem = td.getElementsByTagName ('span') [0]; всего + = parseInt (elem.innerHTML); } \t сигнализация (итого); \t } все клетки имеют такое же имя и Theyre повторяется по всей странице, потому что Айв получил 3 страницы, вложенные в Афоризм – code511788465541441

+0

Я редактировал оригинальный пост – code511788465541441

+0

делать все, чтобы ваши таблицы получить выход с тем же идентификатором HTML ? Если это так, мне интересно, может ли это вызвать проблему? –

0

Нечто подобное может работать:

function totalRows() { 
    var total = 0; 
    var spans = document.getElementsByTagName('span'); 

    for(var i=0; i<spans.length; i++) { 
     if(spans[i].getAttribute('id') === 'lblactive_Row1') { 
      total += parseInt(spans[i].innerHTML, 10); 
     } 
    } 

    return total; 
} 

присоединять totalRows() к EventHandler

+0

Вы забыли указать радиус в вызове функции 'parseInt'. 'parseInt ('010')' будет возвращать 8, а не 10; 'parseInt ('010', 10)' будет возвращаться 10. http://nicolaasmatthijs.blogspot.com/2009/05/missing-radix-parameter.html – Martijn

+0

нет, они не блокируются. theyre all called lblactive_Row1 – code511788465541441

+0

Я отредактировал исходное сообщение – code511788465541441

Смежные вопросы