Я делаю некоторые манипуляции и поиск значений, хранящихся в таблице.
Каждая строка содержит запись, где каждый столбец представляет свойство этой записи.Очень похоже на то, как вы обычно думаете о таблице базы данных.
Итак, мой первый вопрос: это безопасная / приемлемая / переносимая практика для доступа к элементам в строке с использованием известных индексов childNodes [] строки?
Учитывая таблицу этого примера:
<table id='sometable'>
<thead><tr><th>Name</th> <th>Age</th></tr></thead>
<tbody>
<tr><td>Bob</td><td>25</td></tr>
<tr><td>Alice</td><td>31</td></tr>
</tbody>
</table>
Можно ли делать что-то подобное?
/* Get just the 'tbody' rows, i.e. not the header row */
function getTableBodyRows(tblName){
return document.getElementById(tblName).getElementsByTagName('tbody')[0].getElementsByTagName('tr');
}
/* Get the 'name' value for each row */
function getNames( ){
var rows = getTableBodyRows('sometable');
var names = [];
for( var i=0; i < rows.length; i++ ){
/* This line assumes childNode[0] of the row is the 'name' cell (td) which
contains only a single text node. */
names.push( rows[i].childNodes[0].childNodes[0].nodeValue);
}
return names;
}
Помимо того факта, что я бы определил значение для представления номеров столбцов вместо использования литерала, есть ли что-то не так сэтот подход?
Одна альтернатива, о которой я подумал, - добавить атрибут класса к каждому <td>
для идентификации содержимого ячейки, а затем использовать метод getElementsByClassName()
для извлечения отдельных значений, но, похоже,Подобная производительность значительно повлияла бы на большие таблицы.И результат в написании большего количества кода для небольшой выгоды.
Существуют ли другие распространенные методы для выполнения таких задач, как "получить значение 'name' из строки таблицы 'x'"?
Я должен такжеобратите внимание, что я генерирую свои таблицы с помощью javascript, поэтому я не думаю, что мне нужно беспокоиться о том, как разные браузеры могут или не могут рассматривать пробелы как childNode.