Синтаксический анализ определенных HTML-тегов в Javascript
Я ищу Javascript для разбора следующего HTML:
<p>random text random text random text random text</p>
<kbd><h2>Heading One</h2>Body text Body text Body text Body text</kbd>
<p>random text random text random text random text</p>
... и возвращаемся просто:
Heading One
Другими словами, Я хотел бы удалить все теги и основной текст из тегов <kbd>
.
Любые идеи будут высоко оценены!
3 ответа:
var input = /* that HTML string here */; var div = document.createElement('div'); div.innerHTML = input; var h2 = div.getElementsByTagName('h2')[0]; var text = h2.innerText || h2.textContent; alert(text); // alerts "Heading One"
Ссылка:
document.createElement
innerHTML
element.getElementsByTagName
Node.textContent
(Таблица совместимости Quirksmode )Демо:
Регулярное выражение?
var s = "<p>random text</p>\n" + "<kbd><h2>Heading One</h2>Body text</kbd>\n" + "<p>random text</p>"; s.match(/<h2>(.*?)<\/h2>/)[1] // == "Heading One"
Это соответствует первой группе как самой короткой возможной
(.*?)
строке между<h2>...</h2>
.Вы можете найти все совпадения, используя опцию
g
.Обратите внимание, что группы недоступны.s.match(/<h2>(.*?)<\/h2>/g) // == ["<h2>Heading One</h2>"]
Для многострочного содержимого между тегами используйте
s.match(/<tag>[\s\S]*?<\/tag>/ig)
Если включить jQuery (jquery.com) можно сделать так:
var heading=$("h2").html();