Найти число <td>с в <tr>без использования идентификатора или имени - PullRequest
0 голосов
/ 04 ноября 2008

Как рассчитать количество <td> элементов в конкретном <tr>?

Я не указал идентификатор или имя для прямого доступа, мы должны использовать концепцию document.getElementsByTagName.

Ответы [ 7 ]

6 голосов
/ 04 ноября 2008

Вы можете использовать что-то вроде следующего:

var rowIndex = 0; // rowindex, in this case the first row of your table
var table = document.getElementById('mytable'); // table to perform search on
var row = table.getElementsByTagName('tr')[rowIndex];
var cells = row.getElementsByTagName('td');
var cellCount = cells.length;
alert(cellCount); // will return the number of cells in the row
3 голосов
/ 04 ноября 2008

document.getElementsByTagName возвращает массив элементов, поэтому вы должны иметь возможность сделать что-то вроде этого:

var totals = new Array();

var tbl = document.getElementById('yourTableId');
var rows = tbl.getElementsByTagName('tr');
for (var i = 0; i < rows.length; i++) {
    totals.push(rows[i].getElementsByTagName('td').length;
}

...

// total cells in row 1
totals[0];
// in row 2
totals[1];
// etc.
2 голосов
/ 04 ноября 2008

bobince имеет правильный ответ. Я пытался дать ему немного любви, но я новичок с 0 повторениями.

tr.cells.length - самый быстрый способ получить то, что вы хотите.

Теперь предполагается, что у вас уже есть ссылка на tr. Если вы этого не сделаете, в какой-то момент вы должны иметь ссылку на таблицу. В DOM элемент таблицы имеет массив (фактически HTMLCollection), называемый строками.

table.rows[r].cells[c]

даст вам адрес любой ячейки, где r = индекс строки и c = индекс ячейки в этой строке.

1 голос
/ 04 ноября 2008
tr.cells.length

Это более простой способ записать его.

1 голос
/ 04 ноября 2008

Если вы используете библиотеку jQuery , она должна быть такой же простой.

$("table tr:eq(0) > td").length

Вы можете использовать в качестве селектора что угодно, как CSS3

$("#mytableid tr").eq(0).children("td").length 

Был бы другой способ сделать это.

1 голос
/ 04 ноября 2008
var trs = document.getElementsByTagName('tr');
for(var i=0;i<trs.length;i++){
  alert("Number of tds in row '+(i+1)+' is ' + tr[i].getElementsByTagName('td').length);
}

предупредит количество

с в каждом на странице.
1 голос
/ 04 ноября 2008

Что-то вроде

var tot = 0;
var trs = document.getElementsByTagName("tr");
for (i = 0; i < trs.length; i++) {
    tds = trs[i].getElementsByTagName("td");
    tot += tds.length;
}

В конце, tot содержит общее количество всех элементов td "сыновья" элементов tr.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...