Javascript Parse HTML: получить все внутри тега таблицы

0

Если у меня есть http.responseText, хранящийся в переменной javascript, например, с именем sourcecode, который содержит весь исходный код страницы, из которого я хочу извлечь все между тегами таблицы в переменную javascript, как это сделать? Код html выглядит следующим образом:

<table border="0" width="100%" cellspacing="0" cellpadding="0" class="statusbox_ok" style="margin-top: 5px; margin-bottom: 5px">
    <tbody><tr>
        <td align="left" valign="top"><img src="http://www.10eastern.com/images/FoundPhotos/archives/archive118/dasdsa.jpg" style="margin: 2px; margin-right: 10px"></td>
        <td align="left" valign="middle" width="100%">
        Your new username is Tom.   </td>
    </tr>
    </tbody></table>

Я хочу, по крайней мере, иметь возможность извлечь:

<td align="left" valign="middle" width="100%">
            Your new username is Tom.   </td>

Не имеет значения, включает ли он все между тегами или тегами таблицы, но эта часть имеет решающее значение для извлечения в переменную javascript. Как сделать это без jquery? Благодарю.

  • 0
    Можете ли вы добавить атрибут id в таблицу / столбец? Каков ваш выходной сценарий в лучшем случае (столбец, или таблица, или все столбцы)? Есть ли в документе другие таблицы, которые вы хотите исключить? Если так, как мы узнаем, какой стол вам нужен?
  • 0
    Вот с чего начать: regex101.com/r/kB8wA9
Показать ещё 8 комментариев
Теги:

1 ответ

0
Лучший ответ

Обновить:

Используя эту статью, я прочитал о DOMParser() который позволяет анализировать строку в DOM-элемент с Javascript. Используя .parseFromString(), я смог разобрать HTML-строку в элемент DOM.

var html = '<html><table /></html>'; // Your source code
html = new DOMParser().parseFromString(html, "text/html");

Просто убедитесь, что вы обновили document.getElementsByTagName('table') с помощью html.getElementsByTagName('table'), так как теперь мы ищем таблицы в нашей анализируемой строке, а не в документе.

Обновлен JSFiddle.


Я избегал использования RegEx, потому что HTML не является обычным языком, и вы не должны использовать регулярные выражения для его соответствия. Кроме того, для выполнения вашей задачи достаточно чистых функций Javascript.

var tables = document.getElementsByTagName('table');
for(var tableIt = 0; tableIt < tables.length; tableIt++) {
    var table = tables[tableIt];
    if(table.className === 'statusbox_ok') {
        var columns = table.getElementsByTagName('td');
        for(columnIt = 0; columnIt < columns.length; columnIt++) {
            var column = columns[columnIt];
            console.log(column.innerHTML);
        }
    }
}

Я прокрутил все ваши элементы таблицы с помощью .getElementsByTagName(). Затем проверьте .className чтобы убедиться, что это ваша таблица statusbox_ok. Мы снова используем .getElementsByTagName() для .getElementsByTagName() всех столбцов. Вы можете использовать некоторую логику здесь, чтобы определить, какой столбец вы хотите (аналогично тому, что мы делали с классом таблицы), но затем я зарегистрировал содержимое HTML каждого столбца с помощью .innerHTML.

Проверьте этот JSFiddle для рабочего примера.

  • 0
    Вы гений, спасибо = D, это работает отлично.
  • 0
    Рад, что я мог помочь, поддержать / выбрать мой ответ, когда / если вы можете :)
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню