Я разбираю существующую таблицу HTML на веб-странице в массив чисел, чтобы позже перейти к объекту plot. Я изучаю JavaScript, и неясно, как я должен перебирать значения данных в тегах HTML. Это то, что я придумал:
for (i = 0; i < table.rows.length; i += 1) {
row = table.rows[i];
for (j = 0; j < row.cells.length; j += 1) {
cell = row.cells[j];
coord[j] = Number(cell.innerText);
}
data[i] = coord.slice();
}
Меня беспокоит часть .innerText. Это универсальный механизм для итерации над текстовыми элементами в тегах <td>
?
К сожалению .innerText
не универсален, в особенности это отсутствует в Firefox. Используйте .innerHTML
здесь, если это просто текст в ячейке или Number(cell.innerText || cell.textContent)
для учета всех браузеров.
Да, то, что вы делаете, прекрасно, хотя innerText
не поддерживается повсеместно. Хотя у меня есть несколько предложений...
var coords = [],
data = [];
for (var i = 0, rowsLength = table.rows.length; i < rowsLength; i++) {
var row = table.rows[i];
for (var j = 0, cellsLength = row.cells.length; j < cellsLength; j++) {
var cell = row.cells[j];
coord[j] = Number(cell.innerHTML);
}
data[i] = coord.slice();
}
Это предполагает, что в вашей ячейке есть только номер (или первая часть - полезное число).
var
, иначе ваши переменные будут глобальными.i++
обычно используется для увеличения числа.