Если у меня есть 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
? Благодарю.
Обновить:
Используя эту статью, я прочитал о 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 для рабочего примера.
id
в таблицу / столбец? Каков ваш выходной сценарий в лучшем случае (столбец, или таблица, или все столбцы)? Есть ли в документе другие таблицы, которые вы хотите исключить? Если так, как мы узнаем, какой стол вам нужен?