Алгоритм парсинга
есть примерно следующий кусок кода:
<em> знач.1 </em> <br> <em>знач.2 </em> <em> <br> знач.3 </em> <br> <em>знач.4</em> То есть, несколько тэгов em, следующих друг за другом или прерывающиеся тэгом br. Требуется преобразовать этот код вот в такой: <em> знач.1 <br> знач.2 <br> знач.3 <br> знач.4</em> То есть, весь текст всунуть в одну пару тэгов em. Как в принципе, какими способами подобные задачи решаются, какие функции используются? Подскажите, плиз, алгоритм парсинка документа |
Цитата:
- пройтись по em, начиная со второго - взять его текст и вставить в первый em вместе с <br /> - удалить "отработанный" em |
А как пройтись начиная со второго? Обычно прохожусь each, но со второго - это нужно вводить счетчик? Или есть какие-то способы попроще?
Затем, как пометить первый первым, чтобы потом в него что либо вставлять? |
Цитата:
Цитата:
http://jquery-docs.ru/Core/each/ Цитата:
Цитата:
|
Спасибо большое!
|
А еще такой вопрос. Как найти элемент, идущий сразу после какого-то другого? Сейчас гуглю, но пока чего-то не нахожу.
Например, если в коде встречается конструкция <em><br>...</em>то <br> удаляем. Но только если br идет сразу после em. Без промежуточного текста, тэгов и прочее. В такой конструкции <em>бла-бла<br>...</em>br удалятся уже не должен. |
зверек,
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
$(function() {
var a = $("em:first"),
b = $("em:last"),
c = [];
a.nextUntil(b).add(a).add(b).contents().each(function() {
var a = $.trim($(this).text());
a && c.push(a)
});
a.html(c.join("<br>"));
a.nextUntil(b).add(b).remove();
alert($("body").html())
});
</script>
</head>
<body>
<em>
знач.1
</em>
<br>
<em>знач.2 </em>
<em>
<br>
знач.3
</em>
<br>
<em>знач.4</em>
</body>
</html>
|
Цитата:
https://learn.javascript.ru/traversing-dom |
пытаюсь разобраться с этим nextSibling
почему не работает вот такая конструкция
var el = document.querySelectorAll('em');
while(next_em = el.nextSibling) console.log(next_em.tagName);
хотелось получить список всех тэгов, которые идут после em. Но ничего не выводится. |
рони,
круто, спасибо! |
| Часовой пояс GMT +3, время: 23:19. |