JavaScript для разбора таблицы чисел HTML в массив - PullRequest
1 голос
/ 11 ноября 2010

Я анализирую существующую таблицу HTML на веб-странице в массив чисел, чтобы затем передать объект графика. Я изучаю 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>?

Ответы [ 2 ]

5 голосов
/ 11 ноября 2010

К сожалению .innerText не является универсальным , что особенно заметно в Firefox.Используйте либо .innerHTML здесь, если это просто текст в ячейке, либо Number(cell.innerText || cell.textContent) для учета всех браузеров.

1 голос
/ 11 ноября 2010

Да, все, что вы делаете, хорошо, хотя 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++ обычно используется для увеличения числа.
...